簡體   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