通过adb shell和代码理解命令-Android
我正在尝试为应用程序授予通过adb shell和代码理解命令-Android,android,linux,shell,adb,adb-shell,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.
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新手,请更清楚地解释一下内部发生了什么以及如何继续 使用adb shell运行的命令将以shell(UID=2000)
用户权限执行。从java
代码运行的命令将使用应用程序的UID
权限执行。因此不同之处在于。使用adb shell运行的命令将以shell(UID=2000)
用户权限执行。从java
代码运行的命令将使用应用程序的UID
权限执行。这就是区别。为什么要在运行时执行该操作?如果您在应用程序的运行时执行命令,只需将权限添加到可在adb shell require root中使用的命令。如果您想在运行时授予权限,您应该阅读以下内容:@cricket_007我已经在清单中给出了它,但它仍然不起作用。您为什么要在运行时执行它?如果您在应用程序的运行时执行命令,只需将权限添加到可在adb shell require root中使用的命令。如果您想在运行时授予权限,您应该阅读以下内容:@cricket_007我在清单中给出了它,但它仍然不起作用..谢谢您的回答..您能解释一下bref..这意味着shell(UID=2000)拥有超级用户权限或什么…使用一些文档进行更多探索我对shell不是很了解。您能澄清一下如何解决这个问题,以便在UID=2000的情况下执行java代码吗?或者这是不可能的?(正如你在我发布的问题上读到的)我希望对dpm命令执行同样的操作,更改我的应用UID权限会有帮助吗?如果是这样,我将如何着手这样做?感谢您知道为什么运行任何wm命令(例如,wm size
)都可以从adb运行,但返回的是java中的找不到service:window
(而不是某些权限/用户错误)。不同的用户不会解释命令失败的原因,因为找不到而不是权限错误…谢谢你的回答…你能解释一下bref吗…这意味着shell(UID=2000)拥有超级用户权限,或者什么…用一些文档探索更多我对shell不是很了解。您能澄清一下如何解决这个问题,以便在UID=2000的情况下执行java代码吗?或者这是不可能的?(正如你在我发布的问题上读到的)我希望对dpm命令执行同样的操作,更改我的应用UID权限会有帮助吗?如果是这样,我将如何着手这样做?感谢您知道为什么运行任何wm命令(例如,wm size
)都可以从adb运行,但返回的是java中的找不到service:window
(而不是某些权限/用户错误)。不同的用户没有解释命令失败的原因,原因是找不到
而不是权限错误。。。