簡體   English   中英

如何檢查WiFi或數據連接是否已啟用,但是可以訪問Internet

[英]how to check that WiFi or data connection is on but internet accessible or not

我想檢查WiFi或移動數據連接是否(能夠檢查)但能否訪問互聯網

   public static boolean isNetworkAvailable(Context context) {
            ConnectivityManager connectivityManager
                    = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
            return activeNetworkInfo != null && activeNetworkInfo.isConnected();
        }



  public static boolean isInternetAccessible(Context context) {
        if (isNetworkAvailable(context)) {
            try {
                HttpURLConnection urlc = (HttpURLConnection) (new URL("http://aapapps.com").openConnection());
                urlc.setRequestProperty("User-Agent", "Test");
                urlc.setRequestProperty("Connection", "close");
                urlc.setConnectTimeout(1500);
                urlc.connect();
                return (urlc.getResponseCode() == 200);
            } catch (IOException e) {
                Log.e("LOG_TAG", "Couldn't check internet connection", e);
            }
        } else {
            Log.d("LOG_TAG", "Internet not available!");
        }
        return false;
    }

嘗試其工作代碼

public boolean isConnectingToInternet(){
ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
  if (connectivity != null) 
  {
      NetworkInfo[] info = connectivity.getAllNetworkInfo();
      if (info != null) 
          for (int i = 0; i < info.length; i++) 
              if (info[i].getState() == NetworkInfo.State.CONNECTED)
              {
                  return true;
              }

  }
  return false;
}

檢查以下代碼,您必須在清單文件中添加Internet訪問權限。 如果isInternetConnectionAvailable()返回true,那么您的設備可以訪問互聯網,否則它不會連接到互聯網。

<uses-permission android:name="android.permission.INTERNET" />

public boolean isInternetConnectionAvailable() {
    ConnectivityManager connectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null) {
        NetworkInfo networkInfo = connectivity.getActiveNetworkInfo();//active network information
        if (networkInfo != null) {
            return networkInfo.isConnected();
        }
    }
    return false;
}

如果您需要所有網絡信息,請使用以下代碼。

NetworkInfo[] info = connectivity.getAllNetworkInfo();

在檢查設備是否通過WiFi或移動數據連接后,為什么不直接ping谷歌或任何其他最有可能始終可用的網絡應用程序?

如果您收到有效回復,則可以訪問互聯網。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM