2012-05-06 195 views
1

我试图检查可用的互联网连接,我发现很多主题都在谈论这个问题,但是当我尝试验证互联网连接时,我仍然遇到问题,我正在使用的代码是流动的:Android互联网连接检查

public boolean isOnline() { 
    ConnectivityManager conMgr = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

    if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected()) { 
     return true; 
    } else { 
     return false; 
    } 
} 

怎样才能帮助我? PS:对不起,我的英语不好。

+3

...和问题是什么? –

+0

@MattBall问题是:NullPointer ... – Tunandroid

+0

@Sam是在清单文件上设置Internet权限和ACCESS_NETWORK_STATE – Tunandroid

回答

4

你的方法是正确的。您还需要在您的Android清单文件:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

但是请记住,低信号,服务器宕机,圈养门户网站,内容过滤器,其他网络问题可能会阻止你的应用程序到达服务器。因此,拥有活动的网络接口并不能保证特定的网络服务可用。

+0

随着问题中提到的代码 - 我得到isOnline为真 - 虽然我的手机上的其他应用程序正确识别'没有互联网连接' – Jasper

0

在这段代码中你有私人VAR红色状态:

private boolean mIsConnected; 
    @Override 
    protected void onResume() 
    { 
      super.onResume(); 

      //red status broadcast 
      IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);   
      registerReceiver(mNetworkStateReceiver, filter); 
    } 
    private BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      NetworkInfo networkInfo = 
        (NetworkInfo)intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 
      mIsConnected= networkInfo.isConnected(); 
      Log.i("TAG", String.format("Status red: %b", mIsConnected)) 

     } 
    };