4

我想在无根设备上以编程方式打开未知来源设置。我已经检查了这段代码:

boolean success;
int result = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.INSTALL_NON_MARKET_APPS, 0);
if (result == 0) {
    success = Settings.Secure.putString(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, "1");    
}

并具有以下权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>

但是在执行时,它说permission denied: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS我已经给出了。

我已经使用设备管理员权限制作了这个应用程序。

4

2 回答 2

10

但是在执行时,它说权限被拒绝:写入安全设置需要我已经给出的 android.permission.WRITE_SECURE_SETTINGS 。

您不能拥有该权限,除非您使用与固件签名相同的签名密钥进行签名,或者如果您安装在系统分区上(例如,由 root 设备用户)。

我已经使用设备管理员权限制作了这个应用程序。

这与以编程方式修改安全设置无关。

于 2013-09-26T11:33:26.267 回答
1

要做到这一点,你必须有根。如果您的应用是为 root 用户制作的,您可以使用上面的代码:

Process p = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(p.getOutputStream());
    os.writeBytes("settings put global install_non_market_apps 1");
    os.writeBytes("exit\n");
    os.flush();

但问题是它不兼容所有安卓版本。

于 2015-12-23T12:27:20.373 回答