通过ADB打开飞机模式

Cha*_*ily 20 android

我看了一遍,我还没有找到这个问题的具体答案.我希望找到一种方法来从ADB切换飞机模式,不涉及任何方式的GUI.我找到并使用了调用菜单然后使用keyevents打开飞行模式的方法,但由于需要考虑UI布局的可能变化,这种方法只是一种临时解决方案.

我开始认为没有办法通过意图打开或关闭飞机模式,但如果你有任何信息,我会非常感激.

Daw*_*žan 40

首先,我绝不会依赖于盲目浏览UI的解决方案,如大多数答案所示.更多内容见下文.

我喜欢G murali的第一个答案,它建议以下方式启用飞机模式:

adb shell settings put global airplane_mode_on 1
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不起作用.它只是改变飞行模式图标的状态,但所有无线电仍处于活动状态.

它缺少一个非常重要的部分,即在设置更改后立即广播意图,以通知应用程序飞行模式状态已更改.

启用飞行模式,请使用以下命令:

adb shell settings put global airplane_mode_on 1
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
Run Code Online (Sandbox Code Playgroud)

禁用飞行模式,您必须将设置设为0并再次广播意图:

adb shell settings put global airplane_mode_on 0
adb shell am broadcast -a android.intent.action.AIRPLANE_MODE
Run Code Online (Sandbox Code Playgroud)

它已经过测试并在Android 6上运行.


注意

许多答案建议使用活动打开飞行模式设置,然后模拟一些按键以在UI中导航.我不建议依赖它.设备可能只有一个短暂的延迟,并且在打开"设置"对话框之前会按下键,或者同时会出现一些意外的对话框.在这两种情况下,按键都会导致意外的,可能有害的.

此外,UI可能在各种品牌,型号,Android版本等设备上有所不同.我已经在三星Galaxy S4(Android 6.0.1)上测试过它并没有在那里工作.它可能是三星和默认用户界面之间的差异.

设置操作方法应该是完全安全的.

  • 这不再起作用,"Permission Denial:不允许发送广播android.intent.action.AIRPLANE_MODE" (8认同)
  • @DawidFerenczy我在Android 7.0及更高版本上获得'权限拒绝 - 不允许发送广播'.在三星A5和S8上测试过 (4认同)
  • 我发现,如果你的手机已经 root,你可以运行 $ adb shell "su -c 'settings put global plane_mode_on 1'" $ adb shell "su -c 'am broadcast -a android.intent.action.AIRPLANE_MODE'" (3认同)

wus*_*man 22

最近使用 cmd 的 Android 版本:

获取飞行模式

adb shell cmd connectivity airplane-mode                                                  
disabled
Run Code Online (Sandbox Code Playgroud)

打开/关闭飞行模式

adb shell cmd connectivity airplane-mode enable                     
adb shell cmd connectivity airplane-mode disable 
Run Code Online (Sandbox Code Playgroud)

  • 在 Android 11 上完美运行! (3认同)
  • 适用于安卓 13 (2认同)

cda*_*ann 7

对于较新的 android,这将启用/禁用 wifi。不是你的任务,但我很乐意在这里找到它:

adb shell svc wifi disable
Run Code Online (Sandbox Code Playgroud)

或者

adb shell svc wifi enable
Run Code Online (Sandbox Code Playgroud)

归功于此答案:https : //stackoverflow.com/a/27228962/1021872


G m*_*hav 6

打开APN模式

adb shell settings put global airplane_mode_on 1
Run Code Online (Sandbox Code Playgroud)

关闭APN模式

adb shell settings put global airplane_mode_on 0 
Run Code Online (Sandbox Code Playgroud)

在Android-L上验证

  • 这显示启用飞机模式的图标,但互联网连接仍然启用. (3认同)

Acc*_*est 6

这就是我能够在模拟器(API 25)上启用飞行模式并克服权限问题的方法。

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'
Run Code Online (Sandbox Code Playgroud)

请注意,您的“ su 0 ”可能会有所不同。例如,对于较旧的 api,我必须使用“ su &

如果您只想禁用模拟器上的数据,请使用

svc data disable
Run Code Online (Sandbox Code Playgroud)

但是,我见过模拟器在几秒钟后自动重新连接的情况。

  • “su”命令仅适用于[root 设备](https://android.stackexchange.com/questions/127825/adb-shell-su-not-found)。 (2认同)

小智 4

adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
adb shell input keyevent 19 & adb shell input keyevent 23
Run Code Online (Sandbox Code Playgroud)