运行shell命令,虽然Android上的Java代码?

我有一个应用程序应该使用一些shell命令将文件从SD卡复制到/ system / media /。 这将需要根,我正在根植设备上进行testing。 我正在使用运行时执行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权限。 我是新来的工作与根的东西,我似乎无法弄清楚如何得到这个工作。

Solutions Collecting From Web of "运行shell命令,虽然Android上的Java代码?"

要运行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数组,每个string都是一个需要执行的命令。 例如:

 String[] commands = {"sysrw", "rm /data/local/bootanimation.zip", "sysro"};