我想檢查是否有互聯網連接或如果設備實際連接到無線網絡。如何檢查移動數據是否實際活動或WiFi實際連接到任何熱點?
注意:我不想看看是否有互聯網連接或只是WiFi連接。我想檢查設備是否實際接收和發送數據包。
該代碼片段實際檢查是否存在移動數據連接,或者是否啓用了wifi,但並未說明連接是否已建立。
public boolean isNetworkConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
Toast.makeText(context, "No Network", Toast.LENGTH_LONG).show();
return false;
} else
return true;
OR
boolean isConnected = ni != null && ni.isConnectedOrConnecting();
if(isConnected){
return true;
}
else{
Toast.makeText(context, "No Network", Toast.LENGTH_LONG).show();
return false;
}
}
或
public boolean haveNetworkConnection(Context context) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) context.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;
}
所有上述代碼段僅當WiFi或數據啓用檢查。它不顯示連接是否建立。如果wifi或數據已啓用,它將始終返回true。
再次,我的目標是檢查是否檢查連接是否建立。
任何幫助將是很有益的。謝謝在提前.. :)
這個問題已經有了答案。再次感謝。
爲了我的理解和清晰度,我相信只有在連接服務器的請求發生時才能建立連接。你想在這裏建立什麼樣的連接? – Sameer
我只想檢查互聯網是否真的可以提供給用戶。因爲如果移動數據或wifi已啓用,則此代碼每次都會返回true。連接應該在,U應該能夠訪問互聯網。有時候會發生什麼是你有移動數據設置,你沒有數據計劃。 – mike20132013