在Android中编写系统文件的最有效方法?

时间:2013-03-10 23:42:18

标签: android permissions system root

我正在编写一个更改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? (有时它有时不起作用)

1 个答案:

答案 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();
}