Android 以编程方式启用未知源设置

Android 以编程方式启用未知源设置,android,performance,android-service,Android,Performance,Android Service,我想在非根设备上以编程方式打开未知源设置。我已使用此代码进行了检查: boolean success; int result = Settings.Secure.getInt(getContentResolver(), Settings.Secure.INSTALL_NON_MARKET_APPS, 0); if (result == 0) { success = Settings.Secure.putString(getContentResolver(), Settings.Secur

我想在非根设备上以编程方式打开未知源设置。我已使用此代码进行了检查:

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"/>

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

我已使用设备管理员权限创建此应用程序

但在执行时,它说权限被拒绝:写入安全设置需要android.permission.WRITE_secure_设置,我已经给出了这些设置

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

我已使用设备管理员权限创建此应用程序


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

要做到这一点,必须有root用户。如果你的应用是为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();

但问题是它不能与所有android版本兼容。

android的文档对该许可有何说明?谢谢您的解释。