Метод 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 почему интернет все еще подключен???

1 ответ

Решение

Я не знаю, что вы собираетесь делать с приведенным выше кодом, но я уверен, что это сработает.

getActiveNetworkInfo() метод ConnectivityManager возвращает 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" />

в вашем андроид манифесте.

Обратите внимание, что наличие активного сетевого интерфейса не гарантирует доступности определенной сетевой службы. Проблемы с сетью, время простоя сервера, низкий уровень сигнала, порталы с ограниченным доступом, фильтры содержимого и т. П. Могут помешать вашему приложению добраться до сервера. Например, вы не можете точно сказать, может ли ваше приложение связаться с Twitter, пока вы не получите действительный ответ от службы Twitter.

Другие вопросы по тегам