Turn on Unknown Sources setting programmatically

故事扮演 提交于 2019-11-27 18:45:47

问题


I want to turn on Unknown Sources setting programmatically on non rooted device. I have checked with this code:

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");    
}

and with following permissions:

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

but on executing, it says permission denied: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS which I already have given.

I have made this application with device admin permission.


回答1:


but on executing, it says permission denied: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS which I already have given.

You cannot hold that permission, unless you are signed by the same signing key that signed the firmware or if you were installed on the system partition (e.g., by a rooted device user).

I have made this application with device admin permission.

That has nothing to do with modifying secure settings programmatically.




回答2:


To do that you must have root. If your app is made for root users you can use the code above:

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();

But the problem is that it is not compatible with all android versions.



来源:https://stackoverflow.com/questions/19026554/turn-on-unknown-sources-setting-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!