Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中判斷網絡連接狀態的方法

Android中判斷網絡連接狀態的方法

編輯:關於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;
}

考慮到網絡, 我們 ping 了www.baidu.com
國外的話可以 ping 8.8.8.8

3、其他方案 模擬 get 請求

也可以訪問網址, 看 get 請求能不能成功

URL url = new URL("http://www.google.com");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode() == 200) {
  return new Boolean(true);
}

以上就是本文的全部內容,希望對大家學習Android軟件編程有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved