Pregunta ¿Cómo deshabilitar / habilitar la red, cambiar a WiFi en el emulador de Android?


Estoy trabajando en una biblioteca de notificaciones Push para Android (http://deaconproject.org/) que necesita tomar medidas si la conectividad de red se interrumpe o cambia, es decir, necesita reiniciar una conexión de servidor o suspender su funcionamiento hasta que la conectividad de red esté disponible. Parece que funciona bien y Android BroadcastReceiver para "android.net.ConnectivityManager.CONNECTIVITY_ACTION".

Mi problema es probar la biblioteca. Me gustaría probar automáticamente la respuesta de la biblioteca a una conexión de red interrumpida o una transición de 3G a WiFi, en diversas condiciones de configuración. El problema es que no quiero sentarme con el emulador y presionar F8 todo el día.

¿Hay alguna forma de manipular mediante programación las conexiones de red en Android desde una prueba jUnit sin recurrir a cambiar el modo avión? Ya he intentado emitir comandos al emulador a través de la consola, manipular el modo GSM, etc., pero mientras el estado del teléfono cambia en la pantalla, la conexión a Internet permanece activa.


28
2018-06-09 03:15


origen


Respuestas:


Haga clic derecho en el proyecto en el panel "Explorador de proyectos", seleccione "Ejecutar como" y luego "Ejecutar configuraciones".

En el lado izquierdo de la ventana mostrada de forma modal, seleccione "Aplicación Android" y en el lado derecho de la misma ventana, elija la pestaña "Destino".

En la parte inferior de la ventana, en la sección "Parámetros de inicio del emulador", tienes muchas opciones con respecto a la conectividad a Internet.

Espero que esto haya ayudado.

Igor


7
2017-07-18 08:37



He encontrado el Android Dev Tools aplicación realmente útil.

Le permite manipular configuraciones importantes del sistema, como la conectividad de red. Incluso le permite establecer un intervalo en el que activa y desactiva wifi automáticamente, lo que le permite probar los receptores de difusión relacionados con la red.

Si desea instalar la aplicación Dev Tools en un   dispositivo de desarrollo, puede copiar la aplicación desde su emulador   y luego instálelo en su dispositivo usando ADB. Para copiar la aplicación   desde un emulador en ejecución, ejecuta:

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

Esto copia el archivo .apk en el directorio actual. Luego instálalo   en su dispositivo conectado con:

adb -d install Development.apk

enter image description here


6
2017-08-22 09:31



Es posible que también desee ver la vista de control del emulador en Eclipse. No estoy teniendo mucha suerte de hacerlo para matar mis datos en este momento, pero parece que debería.

alt text


4
2017-08-17 17:27



Desafortunadamente, no hay manera de deshabilitar realmente el acceso a la red desde una prueba unitaria mediante programación. Archivé un Solicitud de mejora de Android para este problema


4
2017-08-31 13:34



Una solución simple, pero un poco larga y pesada, es agregar una capa de abstracción a su monitor de estado de conexión wifi.

Agregue una Entidad (NetworkStateManager), debería una aplicación con ámbito singleton (consulte RoboGuice o Dagger a este limpiamente, o acceda a la instancia única a través de su instancia de aplicación).

Agregue métodos para registrar, anule el registro de los oyentes a esta entidad, usando el patrón de diseño Observable observador.

Cada actividad tendrá que registrarse durante OnStart, anular el registro en onStop.

La entidad misma será modificada por un BroadCastReceiver.

Eso es totalmente comprobable, si usa un marco DI, podrá inyectar un stub manejable en sus actividades y ver cómo reaccionan a los cambios de estado de la red.


0
2017-11-28 23:42