networkInfo.isConnected()方法即使没有互联网也返回true?

时间:2017-02-16 20:03:29

标签: android networkinfo

my app

我开发这个应用程序,在主要活动中我检查互联网连接如下:

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活动处理"没有互联网例外"但HOURLY活动中的networkInfo.isConnected()返回true为什么互联网仍然连接???

1 个答案:

答案 0 :(得分:0)

我不知道您打算如何使用上述代码,但我相信这会有效。

getActiveNetworkInfo() ConnectivityManager方法返回表示它可以找到的第一个连接网络接口的NetworkInfo实例,如果没有连接任何接口,则返回null。检查此方法是否返回null应足以判断是否有可用的Internet连接。

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。