以编程方式启用“未知来源”设置

时间:2013-09-26 11:07:06

标签: android performance android-service

我想在非root设备上以编程方式启用“未知来源”设置。我已经检查了这段代码:

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我已经给出了。

我已使用设备管理员权限制作此应用程序。

2 个答案:

答案 0 :(得分:10)

  

但在执行时,它表示权限被拒绝:写入安全设置需要我已经提供的android.permission.WRITE_SECURE_SETTINGS。

除非您使用签署固件的相同签名密钥签名,或者您已安装在系统分区上(例如,由有根设备的用户),否则您无法保留该权限。

  

我已使用设备管理员权限制作此应用程序。

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

答案 1 :(得分:1)

要做到这一点,你必须有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版本都不兼容。