我认为您在解析命令字符串时可能会遇到问题。
/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();
请注意,您应该在 之后获得应用程序 root 权限弹出窗口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();