2010-10-24 5 views
23

Я хотел бы проверить поведение моего приложения, когда пользователь находится в зоне отсутствия сигнала или когда его телефон находится в режиме полета.Как установить AVD (эмулятор) в режим OFFLINE?

->Как разместить виртуальное устройство Android в автономном режиме (где невозможно подключение к Интернету)?

Я попытался следующие:

  • Включение режима полета с помощью настроек AVD: удивительно, что это не работает (работа в Интернете по-прежнему возможно в режиме полета!)

  • Отключение сетевое подключение на моем ПК: это, очевидно, работает, но не удовлетворительно, поскольку мне нужно интернет, когда я тестирую свое приложение.

+1

В настоящее время нет возможности по-настоящему отключить доступ к сети программно изнутри единичного теста. Я зарегистрировал [запрос на улучшение] (http://code.google.com/p/android/issues/detail?id=36916) по этой проблеме. –

+1

@Sebastien Я дал ответ, ниже которого прекрасно работает, и, к сожалению, полностью отключив AVD. Тем не менее, вы можете видеть, как ведет себя ваше приложение. –

ответ

14

Я вижу все те же проблемы. DDMS не полностью убивает его. Ни F8, ни F8. И также не включается режим самолета внутри эмулятора. Скорее всего, мы должны были бы звезды this issue кто-то вошёл в 2009 году.

+1

Этот ответ не решает проблему. См. Мой ответ, чтобы действительно запустить автономный AVD. –

+0

тем временем они закрыли проблему, не исправив ее. Но мы должны ставить его все больше и больше, потому что он все еще существует в 5.0.1! Кажется, что лучшим решением является не использование эмулятора и тест на реальном устройстве. – steven

+0

Это 2015 год, и я по-прежнему сталкиваюсь с этой проблемой по какой-то причине моего эмулятора Nexus 5 x86 по умолчанию, который загружается на установку Android Studio. –

2

Все, что я делаю, e Меню «Окно», выберите «open view-> other», чтобы открыть перспективу DDMS. В перспективе DDMS у вас есть представление «Управление эмулятором», в котором вы можете настроить латентность, роуминг, вы можете дать ему разные состояния телефона и данных. Итак, следуя этой процедуре, чтобы получить представление «Эмулятор», затем перейдите в «Данные» и выберите опцию «Отклонено».

+1

Это действительно тот тип контроля, который я искал. Тем не менее, он НЕ работает ... Я установил Голос и данные, чтобы отрицать, но я все еще могу просматривать Интернет с AVD. Это определенно похоже на ошибку в эмуляторе ... –

+0

* Он работает на моей коробке * :) Я полагаю, что может быть что-то еще, что я установил, что у вас нет. Когда я получу шанс, я буду копаться в нем и посмотреть, могу ли я воспроизвести его, не работая ... какая версия eclipse/avd? –

+0

Я тоже пробовал это. Но это только заставляет ADB отключиться ... –

3

Вы должны просто нажать F8 в окне эмулятора, переключить сеть сотовой сети в соответствии с: http://developer.android.com/guide/developing/tools/emulator.html. Но я тестирую его, и он тоже не работает! Существует только сообщение о том, что нет подключения к интернету, но оно действительно работает ...

+1

нажатие F8 показывает, что вы не подключены, но вы! Сетевые подключения продолжают работать после отключения – steven

2

Я нашел в своем представлении «Управление эмулятором», когда я настраиваю Voice и Data, чтобы «незарегистрированный» не «отрицал» работает для меня. Теперь я, наконец, получил автономную сеть AVD, пока я все еще могу опубликовать этот ответ.

+0

Не работает для меня: мое приложение все еще может загружать данные из Интернета. –

+0

То же самое для меня .... –

+0

Это полезно только для изменения состояния, но его все еще можно подключиться к Интернету. – GoodSp33d

0

Старые вопросы, но я нашел решение:

  1. Откройте командную строку: CTRL + R>cmd
  2. Изменения в андроида инструменты папки

    cd C:\Program Files\Android\android-sdk\tools

  3. Запускаем эмулятор с ложным DNS-сервером. Измените 2.3.3 на имя вашего AVD. @ Делает старт:

    emulator.exe @2.3.3 -dns-server 127.0.0.1

Проверьте руководство для получения дополнительной команды line options.

+0

Это не то же самое, что нет сети, которая является определяемым состоянием телефона. – Walf

+1

Всегда есть кто-то, кто хочет больше ... Я думаю, вы можете включить режим полета, чтобы изменить состояние. Кроме того, вы можете, конечно, сделать соединение с использованием ip вместо имени домена. Но для большинства приложений это сократит интернет-соединение, которое больше, чем любой другой ответ здесь. Пожалуйста, прочитайте FAQ о [down vote] (http://stackoverflow.com/privileges/vote-down): 'Downvoting должен быть зарезервирован для экстремальных случаев.', 'Если что-то не так, пожалуйста, оставьте комментарий или отредактируйте сообщение чтобы исправить его' – PiTheNumber

1

Вместо использования режима полета в эмуляторе Android (который не работает слишком хорошо) отключите сетевое подключение к вашей системе во время тестирования. То есть, коммутатор Ethernet-соединения или Wi-Fi. Хорошо работал для меня.

0

Один комментарий вопроса упоминается Джеймсом Коха говорит, что есть обходной путь:

 
Comment 15 by iscy%[email protected], Jul 8, 2011 
Finally found a work around for this issue: 
telnet localhost 5554 // Connects to the emulator 
qemu monitor    // Enter in the QEmu functionalities 
info network    // List the network adapter "user.0" is usually the name 
set_link user.0 down  // Shut the network down 
set_link user.0 up  // Re-enable networking 

НО:

 
Comment 16 by [email protected], Sep 6, 2011 
This work around doesn't work for me on MacOS 10.7.1 and SDK rev 12 (with platform 2.2, 2.1 and 2.3.3) 
... ... 
qemu monitor 
KO: internal error: could not detach from console ! 

-> То же самое для меня на Windows Vista, SDK оборотов 19 и платформы 10 (2.3.3)

Но, возможно, это использовать для кого-то ...

0

Наконец, ч о таком подходе.

android-sdks/tools/emulator -avd [AVD name goes here] -qemu -net nic,vlan=0 -net user,vlan=1 

На самом деле, это трюк, так как следующий сбой мой эмулятор:

android-sdks/tools/emulator -avd [AVD name goes here] -qemu -net none 

Испытано с Android эмулятор V21.0 на Debian.

+3

Это действительно переведет устройство в автономный режим, но тогда его так много автономно, что даже не adb не может подключиться к нему ... –

20

WIFI:

$ adb shell svc wifi enable 
$ adb shell svc wifi disable 

MOBILE DATA:

$ adb shell svc data enable 
$ adb shell svc data disable 
+0

Я сжег два часа, пытаясь понять это. Спасибо, сэр! – fmcauley

+0

Он работает из командной строки adb, но когда я пытаюсь использовать его в приложении, он не работает и не печатает никаких журналов ошибок. У вас есть идеи, почему он не работает при вызове непосредственно из приложения с помощью ProcessBuilder? public void disableMobileData() { ProcessBuilder pb = new ProcessBuilder ("svc", "data", "disable"); runCommand (pb); } public void runCommand (ProcessBuilder pb) { try { Процесс pc = pb.start(); pc.waitFor(); } catch (исключение e) { Log.e (TAG, «Исключение» + e); } } – krawiec

6

я нашел рабочий раствор. Протестировано на Android 6.0 7,0 эмуляторами, но должно работать на других.

сеть вниз:

adb shell ifconfig eth0 down 

Сеть вверх:

adb shell ifconfig eth0 up 

Если вы получите "Отказано в доступе" ошибка, перезапустите ADB демон как корень:

adb root 

и попробуйте еще раз ,

Смежные вопросы