在Android上连接丢失时收听

时间:2017-05-05 13:09:01

标签: android connection network-connection

当我的设备没有连接时,如何知道和聆听? 是的,我知道通过广播和监听连接的更改状态,但我的问题是我会很清楚地知道我的设备是否可以访问我的网络服务器。 我用函数

开发了我的 BroadcastReceiver
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
   if (networkInfo != null && (networkInfo.isConnected() || networkInfo.isConnectedOrConnecting())) {
      return true;
   }
   return false;

但是它并不能保证我的服务器可以访问因为我可以拥有wifi或移动数据,但无法访问网络。

我开发了一个检查连接是否正常的功能:

ConnectivityManager cm = (ConnectivityManager) App.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo netInfo = cm.getActiveNetworkInfo();
   if (netInfo != null && netInfo.isConnected()) {
      try {
         StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
         StrictMode.setThreadPolicy(policy);
         URL url = new URL(ConfigData.CHECK_IP);   // Change to "http://google.com" for www  test.
         HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
         urlc.setConnectTimeout(TIME_OUT_CALL);
         urlc.setReadTimeout(TIME_OUT_CALL);
         if (urlc.getResponseCode() == 200) {        // 200 = "OK" code (http connection is fine).
                    return true;
                } else {
                    return false;
                }
            } catch (MalformedURLException e1) {
                return  false;
            }
            catch (java.net.SocketTimeoutException e) {
                return false;
            } catch (IOException e) {
                return false;
            }
        }
        return false;

但是,当我的设备无法到达我的服务器时,如果我有连接和启动事件,我该如何经常听? 我读到创建一个不建议ping的服务,所以还有其他方法吗?

0 个答案:

没有答案