Ответ 1
Я испытал, что после нажатия F8 значок в строке состояния показывает, что нет возможности подключения, но если вы попытаетесь просмотреть его, это будет работать. Может быть, это как-то связано с этой открытой ошибкой: ошибка 3838
Я пытаюсь написать приложение, которое необходимо знать, когда нет доступного сетевого подключения к сети. Я использую широковещательное событие android.net.conn.CONNECTIVITY_CHANGE вместе с ConnectivityManager, чтобы реагировать на изменения состояния для достижения этого, но у меня возникают проблемы с тестированием моей настройки в эмуляторе.
Я попробовал оба режима полета и нажал F8, чтобы отключить "Сотовая сеть", но даже если оба из них задействованы, приложение все еще "видит" базовую сеть.
Кто-нибудь смог найти способ имитации полного отсутствия доступа к сети?
Я испытал, что после нажатия F8 значок в строке состояния показывает, что нет возможности подключения, но если вы попытаетесь просмотреть его, это будет работать. Может быть, это как-то связано с этой открытой ошибкой: ошибка 3838
В Eclipse есть DDMS Perspective, где вы можете манипулировать скоростью и доступностью соединения (на вкладке "Управление эмулятором" ). Если это не сработает для вас, я могу предложить включить сеть вашей ОС или даже отключить кабель:)
К сожалению, я хотел опубликовать этот ответ (http://stackoverflow.com/questions/3400109/simulate-wireless-network-in-emulator/6078544#6078544) здесь.
Вот решение, которое я придумал для моделирования общей потери сетевого соединения на эмуляторе:
Напишите следующий script и назовите его "nonetwork.sh"
netcfg eth0 down
sleep 10
netcfg eth0 up
netcfg eth0 dhcp
Загрузите следующую эмуляцию script с помощью этой команды:
adb push nonetwork.sh /data/local/nonetwork.sh
Измените разрешения
adb shell chmod 700 /data/local/nonetwork.sh
Запустить его
adb shell /data/local/nonetwork.sh
Пока сеть не работает на устройстве, вы также потеряете доступ к adb, но как только соединение будет восстановлено, он снова будет работать. Надеюсь, это поможет.
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" />
Я предпочитаю команду svc
svc wifi disable
svc wifi enable
над командой netcfg
netcfg mlan0 up/down
Потому что, когда вы отклоняете Wi-Fi, используя последний, он восстановится через некоторое время, и я не узнал почему.