使用isavailable()指示是否可以进行网络连接

时间:2012-06-10 20:28:28

标签: android

我已尝试过此代码来检查我的移动网络连接

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。任何线索?

3 个答案:

答案 0 :(得分:1)

我想你想要电话状态,而不是数据状态。

尝试使用其他API。

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

这可能有效。

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

可能也很方便。

答案 1 :(得分:0)

尝试使用:

try{

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

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

答案 2 :(得分: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
    }
}