2010-10-24 14 views
23

Me gustaría probar el comportamiento de mi aplicación cuando el usuario se encuentra en una zona sin señal o cuando su teléfono está en modo de vuelo.¿Cómo poner un AVD (emulador) en modo OFFLINE?

->¿Cómo coloco un dispositivo virtual Android en modo fuera de línea (donde no es posible conectarse a internet)?

he intentado lo siguiente:

  • Activar el modo de vuelo a través de la configuración de AVD: sorprendentemente, esto no funciona (navegar por Internet todavía es posible en el modo de vuelo!)

  • Desactivación de la conexión de red en mi PC: obviamente, esto funciona, pero no es satisfactoria, ya que necesito Internet cuando estoy probando mi aplicación

+1

Actualmente no hay forma de deshabilitar realmente el acceso a la red mediante programación desde una prueba unitaria. Presenté una [solicitud de mejora] (http://code.google.com/p/android/issues/detail?id=36916) para este problema. –

+1

@Sebastien A continuación proporciono una respuesta que funciona perfectamente, desafortunadamente desconectando por completo el AVD. Aún así, puede ver cómo se comporta su aplicación. –

Respuesta

14

Estoy viendo los mismos problemas. DDMS no lo mata por completo. Tampoco F8. Y tampoco lo hace encender el modo avión dentro del emulador. Probablemente todos deberíamos star this issue alguien conectado en 2009.

+1

Esta respuesta no resuelve el problema. Vea mi respuesta para una forma de ejecutar realmente un AVD sin conexión. –

+0

mientras tanto cerraron el problema sin arreglarlo. ¡Pero deberíamos destacarlo cada vez más porque todavía existe en 5.0.1! Parece ser que la mejor solución no es usar el emulador y probarlo en un dispositivo real. – steven

+0

Es 2015 y todavía me enfrento a este problema por algún motivo en mi emulador Nexus 5 x86 predeterminado que se descarga en la instalación de Android Studio. –

2

Todo lo que hago es entrar en º e El menú de la ventana, seleccione 'abrir perspectiva-> otro' abra la perspectiva de DDMS. Dentro de la perspectiva de DDMS tiene una vista de 'Control de Emulador' donde puede ajustar la latencia y el roaming, puede darle diferentes estados de teléfono y de datos. Entonces, siguiendo este procedimiento para obtener la vista del Emulador, vaya a la lista desplegable 'Datos' y seleccione la opción 'Denegado'.

+1

Este es de hecho el tipo de control que estaba buscando. Sin embargo, tampoco funciona ... Configuré voz y datos como denegado, pero aún puedo navegar por Internet desde el AVD. Esto definitivamente parece un error en el emulador ... –

+0

* Funciona en mi caja * :) Me imagino que puede haber algo más que he configurado que no. Cuando tenga la oportunidad voy a profundizar y ver si puedo reproducirlo no funciona ... ¿qué versión de eclipse/avd? –

+0

Lo intenté de esta manera, también. Pero eso solo causa que el ADB se desconecte ... –

3

Simplemente debe presionar F8 en la ventana del emulador, alternar las redes de la celda según: http://developer.android.com/guide/developing/tools/emulator.html. ¡Pero lo pruebo y no funciona también! Solo hay un mensaje de que no hay conexión a Internet, pero en realidad funciona ...

+1

al presionar F8 se muestra que no está conectado, ¡pero lo está! Las conexiones de red continúan funcionando después de desconectar – steven

2

Encontré en mi vista 'Emulator Control' cuando ajusto Voz y Datos a "no registrado" no "denegado" funciona para mí. Ahora finalmente desconecté el AVD de la red mientras aún puedo publicar esta respuesta.

+0

No funciona para mí: mi aplicación todavía puede descargar datos de la web. –

+0

Lo mismo para mí .... –

+0

Esto solo es útil para cambiar el estado, pero aún así puede conectarse a internet. – GoodSp33d

0

preguntas antiguas, pero he encontrado una solución:

  1. Abrir una línea de comandos: CTRL + R>cmd
  2. Cambio de herramientas androide carpeta

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

  3. Ejecutar el emulador con un servidor DNS falso. Cambie 2.3.3 al nombre de su AVD. El @ hace que empiece:

    emulator.exe @2.3.3 -dns-server 127.0.0.1

compruebe el manual para más comandos line options.

+0

Eso no es lo mismo que no tener una red, que es un estado de teléfono detectable. – Walf

+1

Siempre hay alguien que quiere más ... Supongo que puede activar el modo de vuelo para cambiar el estado. También puede, por supuesto, hacer una conexión utilizando la ip en lugar de un nombre de dominio. Pero para la mayoría de las aplicaciones esto reducirá la conexión a Internet, que es más que cualquier otra respuesta aquí. Por favor, lea las preguntas frecuentes sobre [down voting] (http://stackoverflow.com/privileges/vote-down): 'Downvoting debe reservarse para casos extremos.,' Si algo está mal, por favor deje un comentario o edite la publicación para corregirlo' – PiTheNumber

1

En lugar de utilizar el modo avión en el emulador de Android (que no funciona demasiado bien), apague la conectividad de red de su sistema mientras realiza la prueba. Es decir, el interruptor de la conectividad Ethernet o Wi-Fi. Funcionó bien para mí

0

Un comentario de la cuestión mencionada por James Koch dice que hay una solución:

 
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 

PERO:

 
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 ! 

-> Lo mismo para mí en Windows Vista, SDK rev 19 y la plataforma 10 (2.3.3)

Pero tal vez eso es útil para alguien ...

0

por último, h sobre este enfoque

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

En realidad, este es un truco, porque el siguiente se estrella mi emulador:

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

Probado con V21.0 emulador de Android en Debian.

+3

Esto realmente pondrá el dispositivo en modo fuera de línea, pero entonces está tan fuera de línea que ni siquiera adb puede conectarse a él ... –

20

WIFI:

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

de datos móviles:

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

He quemado dos horas tratando de descifrar esto. ¡Gracias Señor! – fmcauley

+0

Funciona desde la línea de comandos de adb, pero cuando lo pruebo en la aplicación, no funciona y no imprime ningún registro de errores. ¿Tiene alguna idea de por qué no funciona al invocar directamente desde la aplicación utilizando ProcessBuilder? public void disableMobileData() { ProcessBuilder pb = new ProcessBuilder ("svc", "data", "disable"); runCommand (pb); } public void runCommand (ProcessBuilder pb) { try { Proceso pc = pb.start(); pc.waitFor(); } catch (Excepción e) { Log.e (TAG, "Excepción" + e); } } – krawiec

6

encontré una solución de trabajo. Probado en Android 6.0 y 7.0 emuladores, pero debería funcionar en otros.

Red de abajo:

adb shell ifconfig eth0 down 

red hasta:

adb shell ifconfig eth0 up 

Si obtiene un "Permiso denegado" error, reinicie el demonio adb como root:

adb root 

y vuelve a intentarlo .

Cuestiones relacionadas