2012-05-06 304 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)) 

     } 
    };