我正在编写一个更改cpu调控器的应用程序,类似于setCpu。
我遇到的问题有时是在编写调控器文件(系统文件)时,我得到一个IOException(错误的文件编号),它似乎是随机发生的。
我在onCreate方法中请求root并将进程保持为字段:
private Process suProcess;
public void onCreate(Bundle ...) {
...
suProcess = Runtime.getRuntime().exec("su");
...
当我需要编写系统文件时,这是我的代码:
try {
DataOutputStream out = new DataOutputStream(suProcess.getOutputStream());
out.writeBytes("echo " + FILE_CONTENTS + " > " + SYSTEM_FILE);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
这是处理root权限的正确方法吗?为什么我会随机获得IOException? (有时它有时不起作用)
答案 0 :(得分:0)
显然对这个问题没什么兴趣,但这是我的解决方案。
呼叫
Runtime.getRuntime().exec("su");
在onCreate中以确保用户在使用过程中不必处理SU对话框。
然后在编写系统文件时创建另一个SU进程(应用程序应该已经有su权限)
try {
Process suProcess = Runtime.getRuntime().exec("su");
DataOutputStream out = new DataOutputStream(suProcess.getOutputStream());
out.writeBytes("echo " + FILE_CONTENTS + " > " + SYSTEM_FILE);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}