title: Running Shell commands though java code on Android?
body: <p>I've got an app that's supposed to use some shell commands to copy a file from the sdcard to /system/media/. It will require root, and I am testing on a rooted device. I'm using runtimes to execute the shell commands, but it's not working.
  Here's what I've got for my runtimes</p>
  
  <pre><code>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();
  }
  </code></pre>
  
  <p>But my logcat only shows two of them not getting rejected</p>
  
  <pre><code>07-30 03:14:11.112: WARN/su(3593): request rejected (10047-&gt;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-&gt;0 /system/bin/sh)
  07-30 03:14:11.182: WARN/su(3595): request rejected (0-&gt;0 /system/bin/sh)
  07-30 03:14:11.202: WARN/su(3596): request rejected (0-&gt;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
  </code></pre>
  
  <p>Those two look to be the sysrw and sysro commands, yet the app still asks for root permission when I trigger this code.
  I'm new to working with root stuff and I can't seem to figure out how to get this to work.</p>