Android中判断网络连接状态的方法

2019-12-10 19:08:40于海丽
App判断用户是否联网是很普遍的需求,易采站长站为您分析Android中判断网络连接状态的方法,感兴趣的朋友可以参考一下  

App判断用户是否联网是很普遍的需求,实现思路大概有下面几种

  • 利用Android自带的ConnectivityManager类
  • 有时候连上了wifi,但这个wifi是上不了网的,我们可以通过ping www.baidu.com来判断是否可以上网
  • 也可以利用get请求访问www.baidu.com,如果get请求成功,说明可以上网

    1、判断网络是否已经连接

    // check all network connect, WIFI or mobile
    public static boolean isNetworkAvailable(final Context context) {
      boolean hasWifoCon = false;
      boolean hasMobileCon = false;
     
      ConnectivityManager cm = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
      NetworkInfo[] netInfos = cm.getAllNetworkInfo();
      for (NetworkInfo net : netInfos) {
     
        String type = net.getTypeName();
        if (type.equalsIgnoreCase("WIFI")) {
          LevelLogUtils.getInstance().i(tag, "get Wifi connection");
          if (net.isConnected()) {
            hasWifoCon = true;
          }
        }
     
        if (type.equalsIgnoreCase("MOBILE")) {
          LevelLogUtils.getInstance().i(tag, "get Mobile connection");
          if (net.isConnected()) {
            hasMobileCon = true;
          }
        }
      }
      return hasWifoCon || hasMobileCon;
     
    }
    

    2、利用 ping 判断 Internet 能够 请求成功
    Note:有时候连上了网络, 但却上不去外网

    // network available cannot ensure Internet is available
    public static boolean isNetWorkAvailable(final Context context) {
      Runtime runtime = Runtime.getRuntime();
      try {
        Process pingProcess = runtime.exec("/system/bin/ping -c 1 www.baidu.com");
        int exitCode = pingProcess.waitFor();
        return (exitCode == 0);
      } catch (Exception e) {
        e.printStackTrace();
      }
      return false;
    }