我想在非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
我已经给出了。
我已使用设备管理员权限制作此应用程序。
答案 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版本都不兼容。