【发布时间】:2011-10-16 11:17:53
【问题描述】:
我有一个应用程序,它应该使用一些 shell 命令将文件从 sdcard 复制到 /system/media/。它需要root,我正在root设备上进行测试。我正在使用运行时来执行 shell 命令,但它不起作用。 这是我为我的运行时准备的东西
public void RunAsRoot{String[] commands = {"sysrw", "rm /data/local/bootanimation.zip", "sysro"};{
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : commands) {
os.writeBytes(tmpCmd+"\n");
}
os.writeBytes("exit\n");
os.flush();
}
但我的 logcat 只显示其中两个没有被拒绝
07-30 03:14:11.112: WARN/su(3593): request rejected (10047->0 /system/bin/sh)
07-30 03:14:11.132: DEBUG/su(3592): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
07-30 03:14:11.152: WARN/su(3594): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.182: WARN/su(3595): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.202: WARN/su(3596): request rejected (0->0 /system/bin/sh)
07-30 03:14:11.242: DEBUG/su(3597): 10047 com.bba.stormdroid executing 0 /system/bin/sh using shell /system/bin/sh : sh
这两个看起来是 sysrw 和 sysro 命令,但当我触发此代码时,应用程序仍然要求 root 权限。 我不熟悉使用 root 的东西,我似乎不知道如何让它工作。
【问题讨论】:
-
我可以得到这个示例的工作项目吗?
-
这对我不起作用,我没有收到任何 FileNotFound 异常或 Java 中的任何内容。另外,SuperSU 拦截了根请求,我可以授予它,所以我知道
getRuntime()正在工作。出于某种原因,它不允许我操作/system/media文件夹中的文件。 -
啊,sysrw 和 sysro 好像是未知命令。
-
抱歉这个幼稚的问题:这只适用于有根设备,不是吗?
标签: java android shell exec su