Lo primero nos permite tener los conceptos básicos correctos. Android ejecuta kernel de Linux debajo. Ahora, si tiene que ejecutar su proceso en él con privilegios de superusuario (ejecutarlo como root), la única forma de ejecutar su proceso es a través de command line
porque es la única forma en que puede interactuar directamente con el núcleo. También necesita usar su
antes de ejecutar cualquier comando. También como Chris ha mencionado en su comentario sobre la primera respuesta
Process process = Runtime.getRuntime().exec("su");
no logrará casi nada. Solo pedirá privilegios de súper uso usando el diálogo. Lo que puede hacer es en vez de sólo la ejecución de su
puede ejecutar el proceso con su como siguiente
Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand});
la opción -C
Entre los más utilizados de pocas opciones de SU es -c, que dice su to execute the command that directly follows it on the same line
. Dicho comando se ejecuta como el nuevo usuario, y luego la ventana del terminal o consola desde la cual su se ejecutó regresa inmediatamente a la cuenta del usuario anterior después de que el comando haya completado la ejecución o después de que se haya cerrado cualquier programa que haya lanzado. (More details)
opción alternativa
alternativa al método anterior una u otra forma que podría funcionar es utilizar la línea de comandos para copiar aplicación para que /system/app/
directorio.Entonces su aplicación se ejecutará automáticamente con privilegios de administrador (igual que las aplicaciones del sistema) (More on Android partitions)
Tenga en cuenta que si bien esta pregunta tiene una respuesta con muchos votos ascendentes, ** esa respuesta es incorrecta e inútil **, y el los mecanismos a los que se refiere imprecisamente se han eliminado por mucho tiempo. No logra nada, y surge de un malentendido fundamental del kernel de Linux y el modelo de seguridad y proceso de Unix en el que se basa Android. –