3

現在のコードを使用していますが、ルート化された電話では機能しません。誰でも理由を教えてもらえますか?

public void setpermission()
    {
    try
    { 
    Process process1 = Runtime.getRuntime().exec("su");
    process1.waitFor();
    Process process2 = Runtime.getRuntime().exec("/system/bin/sh chmod 0777  /data/playback.bin");
    process2.waitFor();
    }
    catch((Exception e) {
    e.printStackTrace();
}
4

2 に答える 2

3

コマンド文字列の解析時に問題が発生する可能性があると思います。

/system/bin/sh chmod 0777 /data/playback.bin"/system/bin/sh" "chmod" "0777" "/data/playback.bin/"余分な引用符と同様に扱われます。それが失敗の理由かどうかはわかりませんが、代わりに次のことを試してください。

Process process = Runtime.getRuntime().exec("su");
DataOutputStream suStream = new DataOutputStream(process.getOutputStream());

suStream.writeBytes("/system/bin/sh chmod 0777  /data/playback.bin" + "\n");

suStream.writeBytes("exit\n");
suStream.flush();
suStream.close();

process.waitFor();

の後にアプリのルート許可ポップアップを取得する必要があることに注意してくださいexec("su")。そうしないと、ファイル許可変更コマンドを実行しようとすることさえありません。

編集-上記のこのバリエーションを試すこともできます(この回答に基づいて):

Process shell = Runtime.getRuntime().exec("su", null, new File("/system/bin/"));
OutputStream os = shell.getOutputStream();

os.write(("chmod 777 /data/playback.bin").getBytes("ASCII"));
os.flush();
os.close();
shell.waitFor();
于 2013-08-06T04:43:06.107 に答える
0

すべてのプロセスが開始されますか? 私は間違っているかもしれませんが、suがあるとは思えません。

于 2013-08-06T04:32:12.367 に答える