有没有一种方法可以在Android 4.2上禁用或启用飞行模式?
我使用的代码仅适用于早期版本的Android:
android.provider.Settings.System.putInt(
c.getContentResolver(),
android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
有没有一种方法可以在Android 4.2上禁用或启用飞行模式?
我使用的代码仅适用于早期版本的Android:
android.provider.Settings.System.putInt(
c.getContentResolver(),
android.provider.Settings.System.AIRPLANE_MODE_ON, enable ? 0 : 1
);
在已经获取root权限的设备上,存在一个简单的解决方法。
可以使用以下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
参考这里获取的信息。
免责声明:本信息按“原样”提供,不附带任何形式的保证。
除非使用由固件签名密钥签名的应用程序,或者安装在系统分区上(通常是由已root设备的用户安装),否则将不再可能实现此操作。
根据官方Android 4.2 API文档,一些由Settings.System
定义的设备设置现在是只读的。如果您的应用程序尝试更改已移动到Settings.Global
的Settings.System
中定义的设置,则在运行Android 4.2及更高版本时,写操作将会静默失败。即使您的android:targetSdkVersion
和android:minSdkVersion
的值低于17,您的应用程序也无法在运行Android 4.2及更高版本时修改已转移到Settings.Global
的设置。
但是,如果您是操作系统开发人员,则可以在设置这些权限时写入它们。
<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" >