android - sistema - Activando el modo avión a través de ADB
android sistema operativo (12)
desactiva el modo Avión:
if [[ "$(adb shell dumpsys wifi | grep mAirplaneModeOn)" == "mAirplaneModeOn true" ]]; then
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
&& input keyevent 19
&& input keyevent 23
&& input keyevent 4
fi
activar el modo avión:
if [[ "$(adb shell dumpsys wifi | grep mAirplaneModeOn)" == "mAirplaneModeOn false" ]]; then
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
&& input keyevent 19
&& input keyevent 23
&& input keyevent 4
fi
He mirado por todas partes y no he encontrado una respuesta concreta a esta pregunta. Espero encontrar una manera de alternar el modo avión desde ADB que no involucre a la GUI de ninguna manera. He encontrado y usado el método que activa el menú y luego, al usar Keyevents, se activa el modo avión, pero debido a la necesidad de tener en cuenta los posibles cambios en el diseño de la interfaz de usuario, este método es solo una solución temporal.
Estoy empezando a pensar que no hay una manera de simplemente activar o desactivar el modo de avión a través de la intención, pero si tiene alguna información, lo apreciaría enormemente.
Así fue como pude habilitar el modo Avión en el emulador (API 25) para superar el problema de permisos.
adb -s emulator-5554 shell settings put global airplane_mode_on 1
adb -s emulator-5554 shell ''su 0 am broadcast -a android.intent.action.AIRPLANE_MODE''
Tenga en cuenta que su '' su 0 '' puede variar. Por ejemplo, para una API más antigua tuve que usar '' su & ''
Si en el caso de que desee deshabilitar solo los datos en el emulador, use
svc data disable
Sin embargo, he visto casos en los que el emulador se vuelve a conectar después de unos segundos.
Como los comandos de transmisión dejaron de funcionar después de Nougat, recomendaría usar algo como esto:
adb shell "input keyevent KEYCODE_WAKEUP; input keyevent KEYCODE_MOVE_HOME; am start -a android.settings.AIRPLANE_MODE_SETTINGS; sleep 0.5; input keyevent KEYCean
Esto funciona en Samsung S7
La answer de answer fue la más cercana que funcionó para mí -> Android 5.0 Lollipop. Sin embargo, a veces no se alternaba porque intentaba alternar antes de que la actividad de Configuración se cargara por completo.
Así que hice el sueño terminal durante 0.1 segundos. y agregué golpeando la espalda para salir de Configuración
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
adb shell input keyevent 19 ; sleep 0.1; adb shell input keyevent 23; sleep 0.3; adb shell input keyevent 4;
echo "Toggled airplane mode";
Para Android más reciente, este es / deshabilita wifi. No es tu tarea, pero me hubiera gustado encontrarlo aquí:
adb shell svc wifi disable
o
adb shell svc wifi enable
El crédito va a esta respuesta: https://.com/a/27228962/1021872
Para activar el modo APN
adb shell settings put global airplane_mode_on 1
Para desactivar el modo APN
adb shell settings put global airplane_mode_on 0
verificado en Android-L
Primero, nunca confiaría en soluciones que naveguen ciegamente por la interfaz de usuario como se sugiere en la mayoría de las respuestas aquí. Más en una nota más abajo.
Me gusta la primera respuesta del G murali, que sugiere lo siguiente para habilitar el modo avión:
adb shell settings put global airplane_mode_on 1
Desafortunadamente, no funciona. Simplemente cambia el estado del ícono del modo Avión , pero todas las radios aún están activas .
Falta una parte muy importante, que es transmitir la intención justo después de que se haya cambiado la configuración para informar a las aplicaciones que el estado del modo Avión ha cambiado.
Para habilitar el modo Avión use los siguientes comandos:
adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
Para deshabilitar el modo Avión , debe cambiar la configuración a 0 y transmitir la intención nuevamente:
adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
Está probado y funcionando en Android 6 .
Nota
Muchas respuestas sugieren utilizar una actividad para abrir la configuración del modo Avión y luego simular algunas pulsaciones de teclas para navegar a través de la interfaz de usuario. No recomiendo confiar en eso . Puede haber solo un breve retraso en el dispositivo y se presionarán las teclas antes de que se abra el cuadro de diálogo Configuración o, por ejemplo, aparecerá un cuadro de diálogo inesperado mientras tanto. En ambos casos, la pulsación de teclas causará algo involuntario, posiblemente dañino.
También la interfaz de usuario puede ser diferente en dispositivos de varias marcas, modelos, versiones de Android, etc. Lo he probado en Samsung Galaxy S4 (Android 6.0.1) y no funcionó allí. Puede ser por una diferencia entre la interfaz de usuario de Samsung y la predeterminada.
El método de manipulación de ajustes debe ser perfectamente seguro.
Un método de trabajo que estoy usando en mi Mobile Automation Framework:
Trabajó con OS 5.x 6.x 7.x y 8.x necesita probarlo contra 9.x
/**
* Method to set Android device Airplane mode.
*
* @param status
*
* true - turn on airplane mode false - turn off airplane mode
*/
public static void setAndroidDeviceAirplaneMode(boolean status) {
try {
String airplaneModeStatus = "";
if (status) {
airplaneModeStatus = "0";
} else {
airplaneModeStatus = "0";
}
String sdkPath = System.getenv("ANDROID_HOME") + "/platform-tools/";
Runtime.getRuntime().exec(sdkPath + "adb shell settings put global airplane_mode_on " + airplaneModeStatus);
Thread.sleep(1000);
Process process = Runtime.getRuntime()
.exec(sdkPath + "adb shell am broadcast -a android.intent.action.AIRPLANE_MODE");
process.waitFor();
Thread.sleep(4000);
if (status) {
logger.info("Android device Airplane mode status is set to ON");
} else {
logger.info("Android device Airplane mode status is set to OFF");
}
} catch (Exception e) {
System.out.println(e.getMessage());
logger.error("Unable to set android device Airplane mode.");
}
}
Use el siguiente comando para iniciar Configuración > Redes inalámbricas , alternar el modo Avión y regresar (presionando Atrás):
- Windows / DOS:
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS & adb shell input keyevent 19 & adb shell input keyevent 23 & adb shell input keyevent 4
- Unix / Linux:
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS ; adb shell input keyevent 19 ; adb shell input keyevent 23 ; adb shell input keyevent 4
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS ; adb shell input keyevent 19 ; adb shell input keyevent 23 ; adb shell input keyevent 4
Probado en Samsung Galaxy S (sistema operativo Android 2.3.3).
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS & adb shell input keyevent KEYCODE_ENTER & adb shell input keyevent 4
Se alternará el modo avión. Sin embargo, ¿alguien sabe si hay una manera de deseleccionar o marcar explícitamente la casilla? El problema es que no puedo encontrar una manera de verificar el estado antes de alternar. adb shell settings get global airplane_mode_on
no funciona para mí, no se encuentra la configuración.
Solo funcionó en dispositivo rooteado. .
activar el modo avión
configuración de adb shell -c pone aeroplane_mode_on global 1
adb shell -c am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
desactiva el modo Avión:
configuración de adb shell -c pone aeroplane_mode_on global 0
adb shell -c am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false
adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
adb shell input keyevent 19 & adb shell input keyevent 23