2012-06-10 37 views
0

我曾嘗試這個代碼來檢查我的移動網絡連接表示網絡連接是否可以使用isavailable()

final ConnectivityManager connMgr = (ConnectivityManager) 
     getSystemService(Context.CONNECTIVITY_SERVICE); 


     final android.net.NetworkInfo mobile = 
     connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 


     if(mobile.isAvailable()){ 
      Toast tst = Toast.makeText(this, "There is a network", Toast.LENGTH_SHORT); 
       tst.show(); 
         } 
     else 
     { 
      Toast tst = Toast.makeText(this, "There is No network",Toast.LENGTH_SHORT); 
       tst.show(); 
     } 

程序總是說「沒有網絡」,雖然,有網絡。 也許是因爲我正在使用2G SIM卡,並且此方法適用於3G。任何線索?

回答

1

我猜你要電話的狀態,而不是數據狀態。

嘗試使用不同的API。

http://developer.android.com/reference/android/telephony/ServiceState.html

這可能工作。

http://developer.android.com/reference/android/telephony/TelephonyManager.html

可能是得心應手以及。

+0

這看起來很相關。我試過\t \t ServiceState ss = new ServiceState(); Toast.makeText(this,「This is state」+ ss.getState(),Toast.LENGTH_LONG); \t tt.show(); \t 它總是顯示1狀態無法使用。 IT應該是(0)State_in服務 – yasserbn

0

嘗試使用:

try{ 

    if(mobile.getState() == NetworkInfo.State.CONNECTED){ 
      //connected 
    }else{ 
      //not connected 
    } 

}catch (Exception e){ 
    // if device doesnt have mobile 
} 
+0

不幸的是,它仍然說「沒有連接」。 – yasserbn

0

我用它來檢查網絡連接,希望它有助於:)

public static boolean isOnline(Context applicationContext){ 
    ConnectivityManager cm = (ConnectivityManager) applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
    try{ 
     return cm.getActiveNetworkInfo().isConnectedOrConnecting(); 
    } 
    catch(NullPointerException npe){ 

     return false; //Airplane mode is on 
    } 
} 
+0

這適用於檢測Wifi網絡。當我關閉Wifi時,它將返回false。當我打開Wifi時,它會恢復。但這不是我所需要的。我想要檢測移動網絡的可用性,例如,當我的手機超出覆蓋區域時。 – yasserbn

相關問題