我有一个应用程序,应该使用一些shell命令将文件从sdcard复制到/ system / media /。它将需要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命令,您必须使用以下格式:
public void RunAsRoot(String[] cmds){ Process p = Runtime.getRuntime().exec("su"); DataOutputStream os = new DataOutputStream(p.getoutputStream()); for (String tmpCmd : cmds) { os.writeBytes(tmpCmd+"\n"); } os.writeBytes("exit\n"); os.flush(); }
传递一个字符串数组,每个字符串是需要执行的命令。例如:
String[] commands = {"sysrw","sysro"};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。