Как отключить / включить сеть, переключиться на Wifi в эмуляторе Android? - PullRequest
28 голосов
/ 09 июня 2010

Я работаю над библиотекой push-уведомлений для Android (http://deaconproject.org/)), которая должна предпринимать действия, если сетевое подключение прерывается или изменяется, а именно: необходимо повторно инициировать подключение к серверу или приостановить его работу до подключение к сети доступно. Это, кажется, работает нормально, используя Android BroadcastReceiver для "android.net.ConnectivityManager.CONNECTIVITY_ACTION".

Моя проблема заключается в тестировании библиотеки - я хотел бы автоматически проверить реакцию библиотеки на обрыв сетевого подключения или переход от 3G к WiFi при различных условиях конфигурации. Проблема в том, что я не хочу сидеть с эмулятором и нажимать F8 весь день.

Есть ли способ программно управлять сетевыми подключениями на Android из теста jUnit, не переключаясь в режим полета? Я уже пытался выдавать команды на эмулятор через консоль, манипулировать режимом GSM и т. Д., Но, хотя состояние телефона меняется на дисплее, подключение к Интернету сохраняется.

Ответы [ 5 ]

7 голосов
/ 18 июля 2010

Щелкните правой кнопкой мыши по проекту на панели «Project Explorer», выберите «Run As», затем «Run Configurations».

С левой стороны окна, отображаемого в модальном режиме, выберите «Android Application», а справаСтороной того же окна выберите вкладку «Цель».

В нижней части окна в разделе «Параметры запуска эмулятора» у вас есть множество параметров, касающихся подключения к Интернету.

Надеюсь, это помогло.

Игорь

6 голосов
/ 22 августа 2011

Я нашел приложение Android Dev Tools действительно полезным.

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

Если вы хотите установить приложение Dev Tools на настоящий разработка устройства, вы можете скопировать приложение из вашего эмулятора а затем установите его на своем устройстве с помощью ADB. Скопировать заявку из запущенного эмулятора выполните:

adb -e pull /system/app/Development.apk ./Development.apk

Копирует файл .apk в текущий каталог. Затем установите его на подключенном устройстве с:

adb -d install Development.apk

enter image description here

4 голосов
/ 31 августа 2012

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

4 голосов
/ 17 августа 2010

Возможно, вы захотите посмотреть на представление управления эмулятором и в eclipse. Мне не очень повезло заставить его убить мои данные в данный момент, но похоже, что должно .

alt text

0 голосов
/ 29 ноября 2013

Простое, но длинное и тяжелое решение - добавить слой абстракции над монитором состояния Wi-Fi-соединения.

Добавьте сущность (NetworkStateManager), если она должна быть синглтоном области приложения (см. RoboGuice или Dagger, или обратитесь к уникальному экземпляру через экземпляр вашего приложения).

Добавьте методы для регистрации, отмены регистрации прослушивателей для этой сущности, используя шаблон проектирования Observable Observer.

Каждое действие должно быть зарегистрировано во время onStart, отменить регистрацию в onStop.

Сам объект будет изменен BroadCastReceiver.

Это полностью проверяется, если вы используете инфраструктуру DI, вы сможете внедрить управляемую заглушку в ваши действия и посмотреть, как они реагируют на изменения состояния сети.

...