作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用的是当前代码,它无法在已获得 root 权限的手机上运行。谁能告诉我为什么?
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();
}
最佳答案
我认为您在解析命令字符串时可能会遇到问题。
/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")
之后获得应用程序根权限弹出窗口,所以如果您不这样做,那么它永远不会达到甚至尝试执行您的文件权限更改的地步命令。
编辑 - 您也可以尝试上述的这种变体(基于 this answer ):
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();
关于android - chmod 0777/data/file 不适用于 root 手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18071816/
我是一名优秀的程序员,十分优秀!