Интернет-соединение в эмуляторе Android всегда отображает состояние подключения

Я попытался во многих отношениях проверить подключение к Интернету в моем эмуляторе Android

ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info= conMgr.getActiveNetworkInfo(); if(info != null || info.isConnected()) { Log.v("NetworkInfo","Connected State"); } else{ Log.v("NetworkInfo","Not Connected state"); Log.v("Reason",info.getReason()); } 

Даже если я отключу подключение к Интернету в своей системе, мой код, похоже, отображает состояние Connected, поэтому я догадался, что это может работать

  if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED || conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED ) { Log.v("Congr","Connection Present"); } else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED || conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) { Log.v("conMgr"," No Connection"); } 

Но приведенный выше код также отображает «Присутствие соединения» даже при отключении интернет-кабелей. .Пожалуйста, помогите найти правильный способ сделать это. У меня есть ACCESS_NETWORK_STATE и разрешение INTERNET в файле манифеста

    1 Отключение интернет-кабелей не имеет значения. Используйте F8 для выключения / включения в Интернет в эмуляторе

    2 В первом коде эта логика неверна:

     if(info != null || info.isConnected()) { Log.v("NetworkInfo","Connected State"); } 

    Должен быть:

     if(info != null && info.isConnected()) { Log.v("NetworkInfo","Connected State"); } 

    Если вы используете || То это результат: а) когда информация равна null, информация.isConnected () будет сбой b) когда информация не равна null, вы всегда будете показывать состояние подключенного

    Однако, даже если вы исправите это, код не будет полностью правильным (см. 4 )

    3 Во втором коде эта логика неверна:

      else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED || conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) { Log.v("conMgr"," No Connection"); } 

    должно быть:

      else { Log.v("conMgr"," No Connection"); } 

    Зачем? Потому что есть больше состояний, чем CONNECTED и DISCONNECTED.

    Однако, даже если вы исправите это, код не будет полностью правильным (см. 4 )

    4 Это работает на эмуляторе и устройствах.

     connected = ( conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected() ) 

    Обратите внимание, что использование isAvailable – без этого isConnected может вернуть TRUE, когда WIFI отключен.

    Надеюсь это поможет!

    На самом деле, это не говорит вам, подключен ли эмулятор к сети через хостинг-ПК. Если вы запустите его на ПК, а беспроводная сеть выключена, он все равно возвращает true, как только эмулятор будет считать его в онлайн-состоянии. Единственный способ, которым я смог точно определить, действительно ли эмулятор в сети, – попытаться извлечь страницу и посмотреть, удастся ли ей это сделать или нет.

    Intereting Posts
    Выполнение одновременной анимации по весу LinearLayout с помощью ValueAnimator Android.database.sqlite.SQLiteException: near ": синтаксическая ошибка (код 1): при компиляции: ошибка программирования андроида Стиль кнопки Google google maps Отформатируйте MAC-адрес в Android / Java без создания ненужного мусора Обновленная карта ItemizedOverlay дает ArrayIndexOutOfBoundsException Котлин, обращающийся к константе во внутреннем классе с Java Установите максимальную ширину для загрузки изображений с помощью Picasso Ошибка интеграции firebase: устаревшие службы Google Play Служба поиска местоположения Android Appcelerator Titanium для Android SetMaxDate () отлично работает на Lollipop 5.0.1 android и нуждается в правильном решении Элементы-члены фрагмента, получающие нуль при доступе в onPageSelected () Как отобразить изображение блоба в Android? Распознавание активности Google работает в более старых версиях Android? Возможно ли подключить API Карт Google через обратный прокси-сервер в моем приложении? Как загрузить несколько файлов с помощью AsyncHttpClient Android