Android:以root身份运行应用程序(通过java.lang.Runtime,' su -c / bin / sh'):转义无法正常工作

时间:2014-01-18 19:40:45

标签: android shell root

因此,我需要将文件复制到/system,并且必须使用shell命令,因为应用程序没有以足够的权限运行(并且当时甚至没有安装到/ system / apps) - 因此无法直接写入/system

String cmd = String.format("\"/bin/sh -c \'cp %s %s'", tempPath, out);
p = Runtime.getRuntime().exec(new String[] { "su", "-c", cmd });

但是,SuperSU弹出窗口通知我,以下应用程序被授予以root身份运行:

/bin/sh -c _cp %s %s_

所以'被_替换,最终命令不起作用。 运行具有如此多引号的命令的正确方法是什么(对于su的单个参数,“”和“是”?


我知道使用由su分隔的\n stdin to run commands,但它似乎有自己的问题(并且也没有工作)。

1 个答案:

答案 0 :(得分:0)

如果你通过SuperSU打电话,有很多陷阱,推荐的方法是使用libsuperuser。有关详细信息,请参阅http://su.chainfire.eu/