如何以编程方式启用和禁用Android 4.2上的飞行模式?

有没有办法来禁用或启用Android 4.2的飞行模式?

我使用这个只适用于以前的Android版本的代码:

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

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

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

    从这里采取的信息

    免责声明:此信息“按原样”提供,没有任何forms的保证。

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

    你不能像在官方的Android 4.2 API文档中写的那样

    Settings.System定义的一些设备设置现在是只读的。 如果您的应用程序试图编写更改Settings.System中定义的Settings.System ,并将其移至Settings.Global ,则在Android 4.2及更高版本上运行时,写入操作将自动失败。 即使您的android:targetSdkVersionandroid:minSdkVersion值低于17,您的应用也无法修改在Android 4.2及更高版本上运行时移至Settings.Global

    但是,如果您是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(); 

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