通过adb shell和代码了解命令 - Android

时间:2016-08-08 08:06:40

标签: android linux shell adb adb-shell

我正在尝试向应用授予BATTERSTATS权限。当我从PC运行命令时 - 它运行正常:

adb shell pm grant com.example.sample.myapplication android.permission.BATTERY_STATS

但是从Android应用程序运行时,相同的pm grant命令不起作用:

java.lang.Process process = Runtime.getRuntime().exec("pm grant com.example.sample.myapplication android.permission.BATTERY_STATS");

是否需要root权限才能授予此权限? 如果是这样,为什么它不需要设备根植于adb shell来运行它?

我是Android新手,请更清楚地解释一下内部发生的事情以及如何继续。

1 个答案:

答案 0 :(得分:2)

使用adb shell执行的命令将以shell(UID=2000)用户权限执行。您从java代码运行的命令将使用您应用的UID权限执行。因此差异。