Как симулировать общую потерю сети в эмуляторе Android - PullRequest
26 голосов
/ 11 ноября 2010

Я пытаюсь написать приложение, которое должно знать, когда нет доступного сетевого подключения IP.Я использую широковещательное событие android.net.conn.CONNECTIVITY_CHANGE вместе с ConnectivityManager для реагирования на изменения состояния, чтобы добиться этого, но у меня возникают проблемы при тестировании моей установки в эмуляторе.и режим полета, и нажатие клавиши F8, чтобы отключить «сотовую сеть», но даже при включении обоих из них приложение все еще «видит» базовую сеть.

Кто-нибудь сумел найти способ имитировать полное отсутствие сети?доступ

Ответы [ 5 ]

4 голосов
/ 12 ноября 2010

Мне показалось, что после нажатия клавиши F8 значок в строке состояния показывает, что подключение отсутствует, но при попытке просмотра оно работает.Может быть, это как-то связано с этой открытой ошибкой: ошибка 3838

4 голосов
/ 12 ноября 2010

В Eclipse есть перспектива DDMS, где вы можете управлять скоростью соединения и доступностью (на вкладке управления эмулятором).Если у вас это не работает, я могу предложить включить сеть вашей ОС или даже отключить кабель:)

3 голосов
/ 21 мая 2011

Упс, я намеревался опубликовать этот ответ (/2297424/imitatsiya-besprovodnoi-seti-v-emulyatore#2297437) здесь.

Вот решение, которое я придумал для имитации полной потери сетевого соединения на эмуляторе:

Напишите следующеескрипт и назовите его «nonetwork.sh»

netcfg eth0 down
sleep 10
netcfg eth0 up
netcfg eth0 dhcp

Загрузите следующий скрипт в эмулятор с помощью этой команды:

adb push nonetwork.sh /data/local/nonetwork.sh

Измените права доступа

adb shell chmod 700 /data/local/nonetwork.sh

Запустите его

adb shell /data/local/nonetwork.sh

Пока на устройстве отключена сеть, вы также потеряете доступ к adb, но после восстановления соединения он снова заработает. Надеюсь, это поможет.

1 голос
/ 16 июня 2011

Я предпочитаю команду svc

svc wifi disable
svc wifi enable

, а не команду netcfg

netcfg mlan0 up/down

Потому что, когда вы выключаете Wi-Fi с помощью последнего, через некоторое время он восстановитсячего я не выяснил почему.

1 голос
/ 11 ноября 2010

isAvailable - без этого isConnected может вернуть TRUE, когда WIFI отключен. Обратитесь к приведенному ниже коду и этому URL для получения дополнительной информации. http://developer.android.com/guide/developing/tools/emulator.html

    ConnectivityManager conMgr = ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

      if (
connMgr.getActiveNetworkInfo() != null &&
            conMgr.getActiveNetworkInfo().isAvailable() &&

    conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ) {

          //notify user you are online

      }       else if (

    conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) { //notify user you are not online

          Toast.makeText(getBaseContext(),"Please

    Check Your Internet Connection and Try Again",Toast.LENGTH_SHORT).show();

      }

Добавьте запрос разрешения android.permission.ACCESS_NETWORK_STATE в манифест приложения:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...