2011-05-23 86 views
0

我正在嘗試拉以及通過webservice向服務器和從服務器推送一些數據。我必須做的強制性事情是連接性檢查。我現在所做的是,在從服務器推送/提取結果集之前,我已在每個活動中編寫了連通性檢查代碼。我知道它不是我應該編碼的最佳方式。相反,這個連接檢查應該運行一些背景(屏幕背後),並在WIFI/3G變低/下降時提醒用戶。檢查Android中的Internet連接

這樣做的最佳方法是什麼?

請讓我知道你的想法。

謝謝。

回答

2

您可以註冊BroadcastReceiver監聽連接的變化。詳細的帖子可以在here找到。

+0

謝謝Gabriel,我經歷了該代碼的實現。但是當我嘗試顯示alertdialog而不是吐司時,它顯示出錯誤。我知道這應該只在一項活動中出現,你能建議我該怎麼做嗎?這個alertDialog將包含兩個按鈕,如重試和取消。一旦我重試它將再次檢查連接或取消取消對話框。 – 2011-05-24 08:56:45

+0

考慮到這是一個完全不同的問題,我認爲最好問一個新問題。 – 2011-05-24 17:03:20

2

嗨,我做的這些方法也許有更好的

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; 
    } 
} 
+0

和我認爲這些已經是一個回答問題嘗試搜索fisrt – PedroAGSantos 2011-05-23 07:32:29

+0

是的,非常感謝。但我希望同樣能夠作爲服務運行,或者像廣播接收者一樣運行,從發佈到結束運行應用程序,並檢查連接,並在發生故障時向我指出。如果你對此有任何想法,請分享... – 2011-05-24 09:01:03

0

在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; 

    } 
+0

是的,非常感謝。但我希望同樣能夠作爲服務運行,或者像廣播接收者一樣運行,從發佈到結束運行應用程序,並檢查連接,並在發生故障時向我指出。如果您對此有任何想法,請分享... – 2011-05-24 09:00:42

1
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,雖然沒有互聯網可用。

+0

是的,非常感謝。但我希望同樣能夠作爲服務運行,或者像廣播接收者一樣運行,從發佈到結束運行應用程序,並檢查連接,並在發生故障時向我指出。如果您對此有任何想法,請分享... – 2011-05-24 09:01:30

+0

偉大的答案它像一個魅力 – 2014-06-24 07:04:21