usados principales mas getruntime entrada ejemplos ejecutar con comandos comando java android shell exec su

mas - principales comandos en java



Ejecutando comandos de Shell a través de código Java en Android? (1)

Tengo una aplicación que se supone que utiliza algunos comandos de shell para copiar un archivo desde la tarjeta SD a / system / media /. Requerirá root, y estoy probando en un dispositivo rooteado. Estoy usando tiempos de ejecución para ejecutar los comandos de shell, pero no está funcionando. Esto es lo que tengo para mis tiempos de ejecución

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(); }

Pero mi logcat solo muestra que dos de ellos no son rechazados

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

Esos dos parecen ser los comandos sysrw y sysro, sin embargo, la aplicación todavía solicita permiso de root cuando desencadeno este código. Soy nuevo en trabajar con cosas de raíz y parece que no puedo encontrar la manera de hacer que esto funcione.


Para ejecutar comandos de root, debe usar el formato de flujo de datos:

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(); }

donde se pasa una serie de cadenas, cada cadena es un comando que debe ejecutarse. Por ejemplo:

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