2017-02-16 143 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

感谢这项工作 –