setCpu に似た CPU ガバナーを変更するアプリを作成しています。
私が抱えている問題は、ガバナー ファイル (システム ファイル) を書き込んでいるときに、IOException (不正なファイル番号) が発生し、ランダムに発生するように見えることがあります。
onCreate メソッドでルートをリクエストし、プロセスをフィールドとして保持しています。
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();
}
これはルート権限を処理する適切な方法ですか? そして、なぜIOExceptionがランダムに発生するのですか? (うまくいくときとうまくいかないときがあります)