[英]Check internet connection with 3G and Wifi in Android
有時,我必須在我的Android應用程序中檢查互聯網連接:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
}
上面的代碼僅在一個Network
可用時才有效! 但是,我的設備有wifi
和3G
,當我使用上述兩種類型的網絡連接時,上面的代碼總是返回false
! (當它返回false
時我仍然可以使用google.com
)!! 我錯過了什么? 謝謝!
試試這個
private boolean haveNetworkConnection()
{
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo)
{
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
這段代碼怎么樣?
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
// Check the current state of the Network Information
if (networkInfo == null)
return false;
if (networkInfo.isConnected() == false)
return false;
if (networkInfo.isAvailable() == false)
return false;
return true;
還記得在應用程序清單文件中添加它:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.