0

我想顯示警報,在我的Android應用程序中不可用的連接。如何確定在Android的網絡不可用性

我在我的應用程序中調用了一些休息請求。要檢查此網絡不可用情況,我手動斷開我的筆記本電腦中的無線網絡(我正在模擬器中測試)。

代碼,我調用的服務是這裏

resp = client.execute(httpPostRequest); 

我在這裏捕捉異常

catch (IllegalStateException e) { 
      //assertTrue(e.getLocalizedMessage(), false); 
      e.printStackTrace(); 
     } catch (ClientProtocolException e) { 
      //assertTrue(e.getLocalizedMessage(), false); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      //assertTrue(e.getLocalizedMessage(), false); 
      e.printStackTrace(); 
     } 

,當我得到例外,我試圖讓與 該設備的網絡連接的狀態功能

public boolean IsInternetConnectted() 
    { 
     ConnectivityManager conMgr = (ConnectivityManager)this.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo i = conMgr.getActiveNetworkInfo(); 
     conMgr = null; 
     if (i == null) 
      return false; 
     if (!i.isConnected()) 
      return false; 
     if (!i.isAvailable()) 
      return false; 
     return true;   
    } 

即使wi-fi斷開連接我的模擬器從這個函數返回true。

如何解決這個問題?

+0

要在仿真器中打開/關閉單元網絡,請按F8並檢查 – Zombie

回答

1

我發現,同樣的錯誤在我的模擬器...... 但嘗試在移動設備代碼這段代碼完美運行,而不是未來的任何錯誤在實際設備...

0

試試這個

public static Boolean checknetwork(Context mContext) { 

    NetworkInfo info = ((ConnectivityManager) mContext 
      .getSystemService(Context.CONNECTIVITY_SERVICE)) 
      .getActiveNetworkInfo(); 
    if (info == null || !info.isConnected()) 
    { 

     return false; 
    } 
    if (info.isRoaming()) { 
     // here is the roaming option you can change it if you want to 
     // disable internet while roaming, just return false 
     return true; 
    } 

    return true; 

} 
4

使用這段代碼:

// added as an instance method to an Activity 
boolean isNetworkConnectionAvailable() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo info = cm.getActiveNetworkInfo();  
    if (info == null) return false; 
    State network = info.getState(); 
    return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING); 
}  
0

試試這個:

public static boolean isOnline(Context context) { 
     boolean state=false; 
     ConnectivityManager cm = (ConnectivityManager) 
     context.getSystemService(Context.CONNECTIVITY_SERVICE); 


     NetworkInfo wifiNetwork = 
      cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
      if (wifiNetwork != null) { 
      state=wifiNetwork.isConnectedOrConnecting(); 
      } 

      NetworkInfo mobileNetwork = 
      cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
      if (mobileNetwork != null) { 
      state=mobileNetwork.isConnectedOrConnecting(); 
      } 

      NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
      if (activeNetwork != null) { 
      state=activeNetwork.isConnectedOrConnecting(); 

      } 

      return state; 
     } 

獲得更好的結果,檢查實際設備..

0

發送的HttpRequest然後檢查res ponse代碼你正在如果200 你連接到互聯網否則你不會也通知用戶相應

0

要檢查Internet連接

public class CheckNetwork { 


private static final String TAG = CheckNetwork.class.getSimpleName(); 



public static boolean isInternetAvailable(Context context) 
{ 
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager) 
    context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 

    if (info == null) 
    { 
     Log.d(TAG,"no internet connection"); 
     //Toast.makeText(context, "No Internet Connection", 1000); 
     return false; 
    } 
    else 
    { 
     if(info.isConnected()) 
     { 
      Log.d(TAG," internet connection available..."); 
      return true; 
     } 
     else 
     { 
      Log.d(TAG," internet connection"); 
      return true; 
     } 

    } 
} 
} 

在你的活動課

 if(CheckNetwork.isInternetAvailable(YourActivity.this)) 
      { 
       //your studd 
      } 

使用f7斷開並連接仿真器。我不確定。去谷歌上查詢。 或者,您可以使用廣播接收器或服務。

0

試試這個:

public static boolean isNetworkAvailable(Context context) 
{ 
    ConnectivityManager cm = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo info = cm.getActiveNetworkInfo(); 

    return (info != null); 
} 
2

你好,請檢查以下的答案:

http://stackoverflow.com/questions/13217676/how-to-check-the-real-internet-connected-in-android/13217956#13217956 

但我想建議你,它建議你應該在相當鴯真實設備測試連接代碼lator。因爲仿真器有些時候沒有給出準確的輸出。

相關問題