studio - manual de programacion android pdf
¿Cómo deshabilitar/habilitar la red, cambiar a WiFi en el emulador de Android? (5)
Desafortunadamente, no hay manera de deshabilitar realmente el acceso a la red desde una prueba unitaria mediante programación. Presenté una solicitud de mejora de Android para este problema.
Estoy trabajando en una biblioteca de notificaciones push para Android ( http://deaconproject.org/ ) que necesita tomar medidas si la conectividad de la red se interrumpe o cambia, es decir, necesita reiniciar una conexión al servidor o suspender su funcionamiento hasta 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.
Encontré la aplicación Android Dev Tools 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 real, puede copiar la aplicación de su emulador y luego instalarla en su dispositivo usando ADB. Para copiar la aplicación desde un emulador en ejecución, ejecute:
adb -e pull /system/app/Development.apk ./Development.apk
Esto copia el archivo .apk en el directorio actual. Luego instálalo en tu dispositivo conectado con:
adb -d install Development.apk
Es posible que también desee ver la vista de control del emulador en Eclipse. No estoy teniendo mucha suerte para matar mis datos en este momento, pero parece que debería .
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
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.