2011-08-24 114 views
1

我正在構建一個Android應用程序,並使用下面的代碼來檢測是否存在網絡連接。它運行良好並可檢測移動和WIFI網絡。如何檢測WIFI何時連接到互聯網?

我的問題是如何檢測實際的互聯網連接。下面的代碼連接到WIFI時返回true,但WIFI可能不一定連接到Internet。

代碼

protected 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 {    
     return false; 

     } 

} //end checkInterneConnection method 

感謝您的時間。

梅爾

回答

2

這段代碼將檢查您的設備是否上網conecction,如果信號差,它會顯示一個烤麪包等最好不要,

ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo Info = conMan.getActiveNetworkInfo(); 

     if(Info == null){ 
      Toast.makeText(RegisterActivity.this,"Network Connection Failed! ", Toast.LENGTH_SHORT).show(); 
     } 
1

你應該試試這個:

public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) 
      m_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; 
} 

,並檢查只有WiFi是簡單的:

private boolean isWifiConnected() { 
    int WIFI_STATE = wifi.getWifiState(); 
    if(WIFI_STATE == WifiManager.WIFI_STATE_ENABLED) 
     return true; 

    return false; 
} 
+0

只要檢查WiFi是否連接,它會更好使用WifiManager.WIFI_STATE_ENABLED,特別是如果在檢查後您將嘗試使用它的東西。 – MikeF