如何在Android 4.2上以编程方式启用和禁用Flight模式?

时间:2012-12-07 16:19:26

标签: android airplane

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

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

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

4 个答案:

答案 0 :(得分:36)

rooted 设备上有一个简单的解决方法。

要启用飞行模式,可以使用以下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

来自here

的信息

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

答案 1 :(得分:23)

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

答案 2 :(得分:13)

你不能,如Official Android 4.2 API Documentation

所述
  

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();

答案 3 :(得分:0)

对于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" >