我正在嘗試拉以及通過webservice向服務器和從服務器推送一些數據。我必須做的強制性事情是連接性檢查。我現在所做的是,在從服務器推送/提取結果集之前,我已在每個活動中編寫了連通性檢查代碼。我知道它不是我應該編碼的最佳方式。相反,這個連接檢查應該運行一些背景(屏幕背後),並在WIFI/3G變低/下降時提醒用戶。檢查Android中的Internet連接
這樣做的最佳方法是什麼?
請讓我知道你的想法。
謝謝。
我正在嘗試拉以及通過webservice向服務器和從服務器推送一些數據。我必須做的強制性事情是連接性檢查。我現在所做的是,在從服務器推送/提取結果集之前,我已在每個活動中編寫了連通性檢查代碼。我知道它不是我應該編碼的最佳方式。相反,這個連接檢查應該運行一些背景(屏幕背後),並在WIFI/3G變低/下降時提醒用戶。檢查Android中的Internet連接
這樣做的最佳方法是什麼?
請讓我知道你的想法。
謝謝。
您可以註冊BroadcastReceiver
監聽連接的變化。詳細的帖子可以在here找到。
嗨,我做的這些方法也許有更好的
private boolean checkInternetConnection() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// test for connection
if (cm.getActiveNetworkInfo() != null
&& cm.getActiveNetworkInfo().isAvailable()
&& cm.getActiveNetworkInfo().isConnected()) {
return true;
} else {
//no conection
return false;
}
}
和我認爲這些已經是一個回答問題嘗試搜索fisrt – PedroAGSantos 2011-05-23 07:32:29
是的,非常感謝。但我希望同樣能夠作爲服務運行,或者像廣播接收者一樣運行,從發佈到結束運行應用程序,並檢查連接,並在發生故障時向我指出。如果你對此有任何想法,請分享... – 2011-05-24 09:01:03
在Android的檢查互聯網連接..
public static boolean isOnline(Activity act)
{
ConnectivityManager cm = (ConnectivityManager)act.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting())
{
return true;
}
return false;
}
是的,非常感謝。但我希望同樣能夠作爲服務運行,或者像廣播接收者一樣運行,從發佈到結束運行應用程序,並檢查連接,並在發生故障時向我指出。如果您對此有任何想法,請分享... – 2011-05-24 09:00:42
public static boolean isInternetAvailable(Context context){
ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(wifi.isConnected() || mobile.isConnected()){
// Check for web site
try{
// Create a URL for the desired page
URL url = new URL("http://www.google.com");
// Read all the text returned by the server
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
in.close();
return true;
} catch (Exception e) {
return false;
}
}
return false;
}
該方法還檢查某個網站在這種情況下,無論是www.google.com可用。這可能很有用,因爲設備可能連接到無法訪問Internet的WLAN路由器。在這種情況下,wifi.isConnected()
也將返回true
,雖然沒有互聯網可用。
是的,非常感謝。但我希望同樣能夠作爲服務運行,或者像廣播接收者一樣運行,從發佈到結束運行應用程序,並檢查連接,並在發生故障時向我指出。如果您對此有任何想法,請分享... – 2011-05-24 09:01:30
偉大的答案它像一個魅力 – 2014-06-24 07:04:21
謝謝Gabriel,我經歷了該代碼的實現。但是當我嘗試顯示alertdialog而不是吐司時,它顯示出錯誤。我知道這應該只在一項活動中出現,你能建議我該怎麼做嗎?這個alertDialog將包含兩個按鈕,如重試和取消。一旦我重試它將再次檢查連接或取消取消對話框。 – 2011-05-24 08:56:45
考慮到這是一個完全不同的問題,我認爲最好問一個新問題。 – 2011-05-24 17:03:20