Comprender el comando a través de adb shell y el código-Android
linux adb-shell (1)
El comando que ejecuta con
adb shell
se ejecuta con privilegios de usuario de
shell(UID=2000)
.
El comando que ejecuta desde su código
java
se ejecuta con los privilegios de
UID
su aplicación.
De ahí la diferencia.
Estoy tratando de dar permiso a
BATTERSTATS
a una aplicación.
Cuando ejecuto el comando desde una PC, funciona bien:
adb shell pm grant com.example.sample.myapplication android.permission.BATTERY_STATS
Pero el mismo comando
pm grant
no funciona cuando se ejecuta desde la aplicación de Android:
java.lang.Process process = Runtime.getRuntime().exec("pm grant com.example.sample.myapplication android.permission.BATTERY_STATS");
¿Requiere permiso de root para otorgar este permiso?
Si es así, ¿por qué no requiere que el dispositivo esté rooteado para ejecutarlo a través de
adb shell
?
Soy nuevo en Android, explique un poco más claramente lo que está sucediendo dentro y cómo proceder.