在java程序中执行shell命令,改变文件的权限,可以在命令行中执行
chmod 777 <span style="font-family: Arial, Helvetica, sans-serif;">/data/misc/123.sh"</span>
来改变权限,但是在java代码中执行这个命令时使用
Runtime.getRuntime().exec("chmod 777 /data/misc/123.sh");
无效,使用
String[] command = new String[] {"/system/bin/sh","-c","chmod 777 /data/misc/123.sh"}; Runtime.getRuntime().exec(command);
同样无效
最后通过实例化一个dataoutputstream对象,在这个对象的写字节方法里写命令才实现,代码如下:
String[] commands = new String[] { "/system/bin/sh", "-c", "chmod -R 777 /data/misc/123.sh" }; Process process = null; DataOutputStream dataOutputStream = null; try { process = Runtime.getRuntime().exec("su"); dataOutputStream = new DataOutputStream(process.getOutputStream()); int length = commands.length; for (int i = 0; i < length; i++) { dataOutputStream.writeBytes(commands[i] + "\n"); } dataOutputStream.writeBytes("exit\n"); dataOutputStream.flush(); process.waitFor(); } catch (Exception e) { } finally { try { if (dataOutputStream != null) { dataOutputStream.close(); } process.destroy(); } catch (Exception e) { } }
时间: 2024-12-26 18:22:02