我在Android版本4.3中遇到问题,通过代码控制飞机模式。为此,我使用google play中提供的系统/ app mover应用程序将用户应用程序转换为系统。一旦用户启用飞机模式,背景服务有控制权来检查飞机模式并将其重置为关闭状态并将广播更改发送到设备。我在我的代码中实现的片段保持飞机模式状态关闭。但它在Android版本4.3中失败。它抛出一个称为“权限被拒绝”的异常。让我知道这些是否需要在清单中添加任何其他权限,或者让我知道您对这些问题的建议要修复。
try {
Settings.Global.putInt(context.getContentResolver(),
"airplane_mode_on", 0);
isAirplaneModeOn = isAirplaneModeOn(context);
Intent localIntent2 = new Intent(
"android.intent.action.AIRPLANE_MODE");
localIntent2.putExtra("state", isAirplaneModeOn);
context.sendBroadcast(localIntent2);
} catch (Exception e) {
Log.v("TAG",
e.toString() + "\n" + e.getMessage());
}
答案 0 :(得分:1)
将应用程序移动到/ system / app文件夹不将其转换为系统应用程序 - 它只是使应用程序无法安装,因为/ system通常以只读方式挂载。
您尝试执行的操作需要完整的系统应用程序权限。您只能通过使用用于签署原始固件应用程序的相同密钥(平台密钥)对应用程序进行签名来获取这些内容。换句话说,您需要访问构建正在运行的Android版本的任何人,并让他们为您的APK签名。
答案 1 :(得分:0)
实际上,从Android 4.2开始你无法做到这一点。因为这些设置是从Settings.System或Settings.Secure重新定位的。但是在之前的版本中,它可以正常工作。
http://developer.android.com/about/versions/android-4.2.html
上的相关问题如果您的应用当前正在更改之前定义的设置 在Settings.System(例如AIRPLANE_MODE_ON)中,您应该期待 这样做将不再适用于运行Android 4.2或更高版本的设备 如果将这些设置移至Settings.Global,则更高。