コマンド文字列の解析時に問題が発生する可能性があると思います。
/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();