我有一个奇怪的问题。上周我的代码就像魅力一样。我正在使用root平板电脑,我正在从代码设置调试模式,但不知道为什么,我今天早上运行我的应用程序,我正在使用的命令不再起作用,我得到“权限拒绝等。“但是,当我从我的设备的终端输入命令时,它可以工作......任何帮助?
private void grantPermission(){
try {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
Log.e("PACKAGE", getPackageName());
os.writeBytes("adb shell" + "\n");
os.flush();
os.writeBytes("pm grant "+getPackageName()+" android.permission.CHANGE_CONFIGURATION" + "\n");
os.flush();
os.writeBytes("pm grant "+getPackageName()+" android.permission.WRITE_SECURE_SETTINGS" + "\n");
os.flush();
} catch (Exception e){
e.printStackTrace();
Log.e("SETTINGS", "FAIL");
}
}
答案 0 :(得分:1)
在这里!我终于解决了!权限没有设置得足够快,直到通话,我只是添加了对进程的waitFor()方法的调用,它再次起作用。但我仍然想知道为什么它以前曾经工作过!
private void grantPermission(){
try {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(suProcess.getOutputStream());
os.writeBytes("pm grant "+this.getPackageName()+" android.permission.WRITE_SECURE_SETTINGS" + "\n");
os.writeBytes("pm grant "+this.getPackageName()+" android.permission.CHANGE_CONFIGURATION" + "\n");
os.writeBytes("exit\n");
os.flush();
suProcess.waitFor();
} catch (Exception e){
e.printStackTrace();
}
}