如何在android app中运行rename shell命令(rooted)

时间:2013-04-09 10:23:35

标签: java android eclipse shell command

我是Android新手。我正在尝试运行shell命令来重命名系统中的文件。我有root访问权限。

shell命令:

$ su
# mount -o remount,rw /system
# mv system/file.old system/file.new

我试过这个但是不起作用:

public void but1(View view) throws IOException{
    Process process = Runtime.getRuntime().exec("su");
    process = Runtime.getRuntime().exec("mount -o remount,rw /system");
    process = Runtime.getRuntime().exec("mv /system/file.old system/file.new");
}

2 个答案:

答案 0 :(得分:4)

通过在进程的OuputStream中编写命令,您可以使用相同的进程运行多个命令。这样,命令将在运行su命令的相同上下文中运行。类似的东西:

Process process = Runtime.getRuntime().exec("su");
DataOutputStream out = new DataOutputStream(process.getOutputStream());
out.writeBytes("mount -o remount,rw /system\n");
out.writeBytes("mv /system/file.old system/file.new\n");
out.writeBytes("exit\n");  
out.flush();
process.waitFor();

答案 1 :(得分:0)

您需要将每个命令与su放在同一个进程中,因为切换到root不适用于您的应用程序,它适用于su,它在您到达{{{}}之前完成1}}。

相反,尝试两个执行官:

mount

另外,请注意我已经看到一些...exec("su -c mount -o remount,rw /system"); ...exec("su -c mv /system/file.old system/file.new"); 会失败的系统,但mount -o remount,rw /system会成功。这里的“正确路径”因制造商而异,但可以编程方式收集。