30

有没有办法在 Android 4.2 上禁用或启用飞行模式?

我使用的代码仅适用于以前的 Android 版本:

android.provider.Settings.System.putInt(
    c.getContentResolver(),   
    android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
4

4 回答 4

43

在有根设备上存在一个简单的解决方法。

要启用飞行模式,可以使用以下 root shell 命令:

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

要禁用飞行模式,可以使用这些 root shell 命令:

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

这里获取的信息

免责声明:此信息按“原样”提供,不提供任何形式的保证。

于 2013-04-08T11:10:00.620 回答
24

这不再可能,除非应用程序由固件签名密钥签名或安装在系统分区上(通常由 root 设备用户)。

于 2012-12-07T16:20:43.193 回答
16

你不能,正如官方 Android 4.2 API 文档中所写

由 定义的一些设备设置Settings.System现在是只读的。如果您的应用尝试将更改写入 Settings.System已移至 中定义的设置Settings.Global,则在 Android 4.2 及更高版本上运行时,写入操作将静默失败。即使您的android:targetSdkVersion和 值android:minSdkVersion低于 17,您的应用也无法修改Settings.Global在 Android 4.2 及更高版本上运行时移动到的设置。

但是,如果您是 OS Developer,则可以在设置这些权限时编写

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

然后写和读,

// To Write
Settings.Global.putString(getContentResolver(), "airplane_mode_on", "1");

// To Read
String result = Settings.Global.getString(getContentResolver(), Settings.Global.AIRPLANE_MODE_ON);
Toast.makeText(this, "result:"+result, Toast.LENGTH_SHORT).show();
于 2012-12-07T18:05:22.703 回答
-1

对于 KitKat,您必须添加android:sharedUserId="android.uid.system"清单文件。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.airplanesetting"
    android:versionCode="1"
    android:versionName="1.0"
    android:sharedUserId="android.uid.system" >
于 2014-06-04T04:33:09.160 回答