【问题标题】:Most efficient way to write system files in Android?在Android中编写系统文件的最有效方法?
【发布时间】:2013-03-10 23:42:17
【问题描述】:

我正在编写一个类似于 setCpu 的改变 cpu 调控器的应用程序。

我遇到的问题是有时在编写调控器文件(系统文件)时,我得到一个 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? (有时有效,有时无效)

【问题讨论】:

    标签: android permissions system root


    【解决方案1】:

    显然对这个问题不太感兴趣,但这是我的解决方案。

    打电话

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多