9

众所周知,在 Android 4.2 上,只有系统应用程序可以切换飞行模式。但我认为它必须可用于有根设备。我想在我的应用程序中使用 Build.VERSION.SDK_INT>=17 来实现它。如何在具有 Android 4.2 的根设备上切换飞行模式?

4

1 回答 1

13

Android 4.2 中有一个新的“设置”二进制文件您也可以在没有 su 的情况下使用它,然后您的应用需要更改应用清单中声明的​​此设置所需的权限(对于 4.2 中的飞行模式,这将是 WRITE_SECURE_SETTINGS - 仅授予到安装在系统分区上的应用程序)。

启用

su 
settings put global airplane_mode_on 1
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true

停用

su
settings put global airplane_mode_on 0
am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false

对于其他android版本和其他设置(4.2之前可以在没有root的情况下激活飞行模式)您可以在settings.db中使用sql注入

su
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
insert into global values(null, 'airplane_mode_on', 1);

将“global”替换为“system”或“secure”,将“airplane_mode_on”替换为所需表条目的键。对于某些设置,您需要在之后发送某些广播,请参见上面的飞行模式示例。

要探索您的 settings.db,请在终端应用程序中运行:

su
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
.tables
select * from global
select * from secure
select * from system
于 2013-04-22T10:08:00.313 回答