Solución:
Primero: tenga en cuenta que solo puede ejecutar comandos de shell usando su (= solo puede usar comandos de shell como root, no código java).
Segundo: No estoy seguro de si esto se aplica a todas las aplicaciones su, pero este es el mensaje de ayuda de su
en mi telefono:
Usage: su [options] [--] [-] [LOGIN] [--] [args...]
Options:
--daemon start the su daemon agent
-c, --command COMMAND pass COMMAND to the invoked shell
-h, --help display this help message and exit
-, -l, --login pretend the shell to be a login shell
-m, -p,
--preserve-environment do not change environment variables
-s, --shell SHELL use SHELL instead of the default /system/bin/sh
-u display the multiuser mode and exit
-v, --version display version number and exit
-V display version code and exit,
this is used almost exclusively by Superuser.apk
Esto significa: tienes que correr su -c something
(o su -c something - root
, pero root
es el predeterminado de todos modos). Básicamente, esto es igual a su en la mayoría de los sistemas Linux, excepto en el demonio, ya que no hay demonio que controle las llamadas a su en los sistemas linux normales.
Si otros comandos su se comportan de manera diferente (lo cual es posible), es más seguro abrir una secuencia en un shell, ejecutar su
, evalúe su código de retorno, luego proceda a ejecutar otros comandos, finalmente ejecute exit
.
Hay una buena respuesta aquí: ANDROID: ¿Cómo obtener acceso de root en una aplicación de Android?
“Hasta donde yo sé, solo puede ejecutar comandos de línea de comandos usando privilegios de root. Puede usar esta clase genérica que hice que envuelve el acceso de root en su código: http://muzikant-android.blogspot.com/2011/ 02 / cómo-obtener-acceso-raíz-y-ejecutar.html “