首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android应用中运行rename shell命令(rooted)

如何在android应用中运行rename shell命令(rooted)
EN

Stack Overflow用户
提问于 2013-04-09 18:23:35
回答 2查看 4.4K关注 0票数 2

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

shell命令:

代码语言:javascript
复制
$ su
# mount -o remount,rw /system
# mv system/file.old system/file.new

我试过了,但不起作用:

代码语言:javascript
复制
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");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-09 18:36:32

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

代码语言:javascript
复制
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();
票数 4
EN

Stack Overflow用户

发布于 2013-04-09 18:52:06

您需要每个命令都处于与su相同的进程中,因为切换到根目录并不适用于您的应用程序,它适用于su,它在您到达mount之前完成。

相反,可以尝试两个exec:

代码语言:javascript
复制
...exec("su -c mount -o remount,rw /system");
...exec("su -c mv /system/file.old system/file.new");

另外,请注意,我曾经看到过一些系统,在这些系统中,mount -o remount,rw /system会失败,而mount -o remount,rw /dev/<proper path here> /system会成功。这里的“正确路径”因制造商不同而不同,但可以通过编程来收集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15899414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档