para - Cómo simular la pérdida total de la red en el emulador de Android
emulador de android para android (5)
Estoy intentando escribir una aplicación que necesita saber cuando no hay una conexión de red IP disponible. Estoy usando el evento de transmisión android.net.conn.CONNECTIVITY_CHANGE junto con ConnectivityManager para reaccionar a los cambios de estado para lograr esto, pero tengo problemas para probar mi configuración en el emulador.
He probado el modo de vuelo y presionando F8 para deshabilitar la "Red celular", pero incluso con ambos activados, la aplicación aún "ve" la red subyacente.
¿Alguien ha logrado encontrar una manera de simular una falta total de acceso a la red?
Experimenté que después de presionar F8, un ícono en la barra de estado muestra que no hay conectividad, pero si intentas buscarlo funciona. Tal vez tenga algo que ver con este error abierto: error 3838
Hay Perspectiva DDMS en Eclipse, donde puede manipularse con la velocidad de conexión y la disponibilidad (en la pestaña Control de emulador). Si no funciona para usted, puedo sugerirle que active la red de su sistema operativo o incluso que desconecte el cable :)
Prefiero el comando svc
svc wifi disable
svc wifi enable
sobre el comando netcfg
netcfg mlan0 up/down
Porque cuando rechazas el wifi con este último, se recuperará después de un tiempo, lo cual no he descubierto por qué.
Vaya, quise publicar esta respuesta (http://.com/questions/3400109/simulate-wireless-network-in-emulator/6078544#6078544) aquí.
Aquí está la solución que se me ocurrió para simular la pérdida total de conexión de red en el emulador:
Escriba el siguiente script y asígnele el nombre "nonetwork.sh"
netcfg eth0 down
sleep 10
netcfg eth0 up
netcfg eth0 dhcp
Suba el siguiente script al emulador a través de este comando:
adb push nonetwork.sh /data/local/nonetwork.sh
Cambiar los permisos
adb shell chmod 700 /data/local/nonetwork.sh
Ejecutarlo
adb shell /data/local/nonetwork.sh
Mientras la red no funciona en el dispositivo, perderá el acceso a adb, pero una vez que se restablezca la conexión, volverá a funcionar. Espero que esto ayude.
isAvailable
: sin esto isConnected
puede devolver TRUE
cuando WIFI está deshabilitado. Consulte el código a continuación y esta URL para obtener más información http://developer.android.com/guide/developing/tools/emulator.html
ConnectivityManager conMgr = ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if (
connMgr.getActiveNetworkInfo() != null &&
conMgr.getActiveNetworkInfo().isAvailable() &&
conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING ) {
//notify user you are online
} else if (
conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED) { //notify user you are not online
Toast.makeText(getBaseContext(),"Please
Check Your Internet Connection and Try Again",Toast.LENGTH_SHORT).show();
}
Agregue la solicitud de permiso android.permission.ACCESS_NETWORK_STATE
a su manifiesto de aplicación:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />