1

我的应用

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

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为什么互联网仍然连接???

4

1 回答 1

-1

我不知道你打算用上面的代码做什么,但我相信这会奏效。

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。

于 2017-02-16T20:19:19.297 回答