2017-02-16 126 views
1

my app即使沒有互聯網,networkInfo.isConnected()方法也會返回true嗎?

我開發這個應用程序,在主要活動我檢查了互聯網連接,如下:

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); 

    if (networkInfo != null && networkInfo.isConnected()) { 
     LoaderManager loaderManager = getSupportLoaderManager(); 
     loaderManager.initLoader(1, null, this); 

    } 

,當我去HOURLY活動我上網查資料,以同樣的方式像上面的onCreate()方法。

我的問題,當我打開主活動我斷開互聯網,去HOURLY活動來處理「沒有互聯網例外」,但networkInfo.isConnected()在HOURLY活動回報true互聯網爲何仍然連接???

+0

斷開你的手機信號? – anthony

回答

0

我不知道你打算如何處理上面的代碼,但我相信這會起作用。

ConnectivityManagergetActiveNetworkInfo()方法返回表示所述第一連接的網絡接口,它可以找到或NetworkInfo實例零,如果沒有的接口相連接。檢查這個方法是否返回null應該足以說明互聯網連接是否可用。

private boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager 
      = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

您還需要:

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

在你的Android清單。

請注意,擁有活動的網絡接口並不能保證特定的聯網服務可用。網絡問題,服務器停機時間,低信號,強制門戶,內容過濾器等都可能會阻止您的應用訪問服務器。例如,您無法確定您的應用是否可以訪問Twitter,直到您收到來自Twitter服務的有效回覆。

+0

感謝這項工作 –

相關問題