繁体   English   中英

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

[英]Most efficient way to write system files in Android?

我正在写一个更改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? (有时无法正常工作)

在这个问题上显然没有很多兴趣,但是这是我的解决方案。

呼叫

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM