1

我在 android 4.3 版中遇到了通过代码控制飞行模式的问题。为此,我使用 google play 中提供的系统/应用程序移动应用程序将用户应用程序转换为系统。一旦用户启用飞行模式,后台服务就有控制检查飞行模式并将其重置为关闭状态并将广播更改发送到设备。在我在代码中实现的代码段下方以保持飞行模式状态处于关闭状态。但它在 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());
                }
4

2 回答 2

1

将应用程序移动到 /system/app 文件夹不会其变成系统应用程序 - 它只是使应用程序可卸载,因为 /system 通常以只读方式安装。

您尝试执行的操作需要完整的系统应用程序权限。您只能通过使用用于签署原始固件应用程序的相同密钥(平台密钥)签署您的应用程序来获得这些。换句话说,您需要访问构建您正在运行的 Android 版本的任何人,并让他们签署您的 APK。

于 2013-10-25T13:49:18.457 回答
0

实际上你不能从 Android 4.2 开始。因为该设置已从 Settings.System 或 Settings.Secure 重新定位到此处。但在以前的版本上它工作正常。

http://developer.android.com/about/versions/android-4.2.html

如果您的应用当前正在更改之前在 Settings.System 中定义的设置(例如 AIRPLANE_MODE_ON),那么如果将这些设置移至 Settings.Global,那么您应该预计,这样做将不再适用于运行 Android 4.2 或更高版本的设备。

StackOverflow上的相关问题

于 2014-02-19T10:35:26.740 回答