Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查活动WIFI连接是否是android中的热点(不是移动热点)?_Java_Android_Url_Https_Connection - Fatal编程技术网

Java 如何检查活动WIFI连接是否是android中的热点(不是移动热点)?

Java 如何检查活动WIFI连接是否是android中的热点(不是移动热点)?,java,android,url,https,connection,Java,Android,Url,Https,Connection,我想检查设备的当前internet连接状态 到目前为止,我一直尝试使用HttpURLConnection和connect()连接URL,然后通过响应代码处理结果。对于200,这将是一个稳定的连接。如果URL重定向(例如在本例中重定向到热点登录页面),则响应将为3xx 然而,这在所有运行安卓5.0.1及更低版本的设备上运行良好。从5.0.2开始,我得到了所有州的302分: 已连接到热点,但未登录(实际返回302) 已连接到热点并已登录 连接到移动数据 我的想法是,它重定向到httpsURL,因此返

我想检查设备的当前internet连接状态

到目前为止,我一直尝试使用HttpURLConnection和connect()连接URL,然后通过响应代码处理结果。对于200,这将是一个稳定的连接。如果URL重定向(例如在本例中重定向到热点登录页面),则响应将为3xx

然而,这在所有运行安卓5.0.1及更低版本的设备上运行良好。从5.0.2开始,我得到了所有州的302分:

  • 已连接到热点,但未登录(实际返回302)
  • 已连接到热点并已登录
  • 连接到移动数据
  • 我的想法是,它重定向到httpsURL,因此返回错误的响应代码

    如果我将URL切换到,最后两种状态工作正常,但如果设备未登录热点,则根本不会重定向(因此引发TimeoutException)

    以下是我的代码(请注意,它是AsyncTask的一部分,实际上是一个片段):

    受保护整数doInBackground(Void…voids){
    Log.d(标签“检查互联网…”);
    ConnectivityManager cm=(ConnectivityManager)getActivity().getSystemService(Context.CONNECTIVITY_服务);
    NetworkInfo activeNetwork=cm.getActiveNetworkInfo();
    //如果活动网络或移动数据可用且已连接
    if(activeNetwork!=null&&activeNetwork.isConnected(){
    试一试{
    URL URL=新URL(测试URL);
    HttpURLConnection urlc=(HttpURLConnection)url.openConnection();
    setRequestProperty(“用户代理”、“测试”);
    setRequestProperty(“连接”、“关闭”);
    setConnectTimeout(超时);
    //尝试访问URL(本例中为“Google.com”)
    Log.d(标记“尝试访问”+测试URL);
    connect();
    responseCode=urlc.getResponseCode();
    Log.d(标记,“响应代码:”+String.valueOf(responseCode));
    if(responseCode>=信息性&responseCode=稳定连接和responseCode<重定向){
    //2xx=稳定
    如果(cm.isActiveNetworkMetered()){
    Log.d(标记“活动连接已计量”);
    返回移动_数据;//测量数据时
    }
    返回可用的INTERNET地址;
    }else if(responseCode>=重定向和responseCode=C\u错误和responseCode=S\U错误){
    //5xx=服务器错误
    Log.d(标记“服务器错误”);
    返回服务器错误;
    }
    }捕获(SocketTimeoutException e){
    Log.d(标记“错误检查internet连接(超时)”;
    返回连接超时;
    }捕获(IOE异常){
    Log.d(标记“错误检查internet连接(IOException)”,e);//错误返回false
    不返回互联网;
    }
    }
    //当既没有活动网络也没有移动数据时,返回false
    Log.d(标签“既不移动数据也不连接wifi”);
    不返回互联网;
    }
    
    所以,我的问题是:有没有什么解决办法,在我不应该被重定向的时候,我不会被重定向?
    或者,如果活动连接是公共热点(如Telekom热点或类似热点),是否有更好的方法来检查

    提前谢谢