我正在尝试编写一个在运行时将某些内容复制到/ system分区的应用程序。我已经实现了通过请求SU权限以root身份运行终端命令的功能。我可以成功运行很多命令(在用SuperUser授予权限请求之后)。但是,当我尝试将/ system重新安装为读/写时,没有任何反应。我没有收到错误或崩溃,并且命令看起来很好,但分区保持为只读。这是我正在运行的命令(Droid X):mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system
,如果我从终端运行相同的命令,它可以正常工作。这是我的应用程序中执行root命令的代码:
String cmd = "mount -o rw,remount -t ext3 /dev/block/mmcblk1p21 /system";
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
os.writeBytes(cmd + "\n");
os.writeBytes("exit\n");
os.flush();
然后我有一些代码检查stdout和stderr流,看看发生了什么。任何人都可以告诉我为什么这不起作用?
答案 0 :(得分:6)
我明白了 - 命令实际上是成功的,但似乎RW状态仅适用于应用它的会话。因此,在SU下执行一组命令后,下一组命令使/ system处于RO状态。我所要做的就是在退出SU会话之前添加命令来复制文件。