Turning airplane mode on via ADB

后端 未结 15 1585
暖寄归人
暖寄归人 2020-12-01 06:43

I\'ve looked all over and I haven\'t found a concrete answer to this question. I\'m hoping to find a way to toggle airplane mode from ADB that doesn\'t involve the GUI in an

相关标签:
15条回答
  • 2020-12-01 07:11

    To turn-on APN mode

    adb shell settings put global airplane_mode_on 1
    

    To turn-off APN mode

    adb shell settings put global airplane_mode_on 0 
    

    verified on Android-L

    0 讨论(0)
  • 2020-12-01 07:11

    A working method which I am using in my Mobile Automation Framework:

    Worked with OS 5.x 6.x 7.x and 8.x need to test it against 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.");
        }
    }
    
    0 讨论(0)
  • 2020-12-01 07:11

    If you have root access, and the method in the answer from David Ferenczy Rogožan left you with a security exception:

    Permission Denial: not allowed to send broadcast android.intent.action.AIRPLANE_MODE
    

    you can try to run the commands as superuser as follows.

    Enable Airplane Mode

    adb shell "su -c 'settings put global airplane_mode_on 1'"
    adb shell "su -c 'am broadcast -a android.intent.action.AIRPLANE_MODE'"
    

    Disable Airplane Mode

    adb shell "su -c 'settings put global airplane_mode_on 0'"
    adb shell "su -c 'am broadcast -a android.intent.action.AIRPLANE_MODE'"
    

    In my experience with Android 9 the explicit invoke of su was only necessary for the broadcasting command while for the former I could keep:

    adb shell settings put global airplane_mode_on [0|1]
    

    Credits to Arya who left this trick into the comment section of the answer mentioned above.

    0 讨论(0)
  • 2020-12-01 07:12

    william's answer was the closest one that worked for me -> Android 5.0 Lollipop. However, sometimes it wouldn't toggle because it was trying to toggle before the Settings activity was fully loaded.

    So I made the terminal sleep for 0.1 seconds. and I added hitting the back to exit out of Settings

    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";
    
    0 讨论(0)
  • 2020-12-01 07:13

    adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS & adb shell input keyevent KEYCODE_ENTER & adb shell input keyevent 4

    Will toggle airplane mode. However does anyone know if there's a way to explicitly uncheck or check the box? The problem is I can't find a way to check the state before toggling. adb shell settings get global airplane_mode_on does not work for me, settings is not found.

    0 讨论(0)
  • 2020-12-01 07:16

    Since the broadcast commands stopped working after Nougat, I would recommend using something like this:

    adb shell "input keyevent KEYCODE_WAKEUP;input keyevent KEYCODE_MOVE_HOME;am start -a android.settings.AIRPLANE_MODE_SETTINGS;sleep 0.5;input keyevent KEYCODE_ENTER;pm clear com.android.settings;input keyevent KEYCODE_HOME"
    

    This works on Samsung S7

    0 讨论(0)
提交回复
热议问题