通过adb列出Android应用程序的权限

x33g5p2x  于 2023-01-07  发布在  Android
关注(0)|答案(4)|浏览(944)

使用adb,我如何知道Android应用程序需要哪些权限?
因为我想在不同的设备上显示多个应用程序的权限,所以在Google PlaySettingsApplications manager中查看它们需要太多的手工工作。

pxq42qpu

pxq42qpu1#

我只想把Jason和Juuso的答案结合起来,注意前者列出了 granted 的权限,而后者列出了 requested 的权限(包括已授予的权限)。
要查看 * 仅授予的权限 *(但忽略已请求但未授予的权限),请使用

adb shell dumpsys package packagename

并检查输出底部的grantedPermissions部分。
列出 * 所有权限 *(已请求但未授予+已请求但已授予):
1.注意软件包的APK。您可以运行相同的命令

adb shell dumpsys package packagename

并从其输出的codePath元素获取APK路径。
1.(如果您的设备/模拟器上没有aapt)您需要从设备/模拟器中提取apk,正如Juuso Ohtonen在他的回答中指出的那样。

adb pull /data/app/com.your.package.apk

1.列出包的所有权限
如果设备/模拟器中缺少aapt,可以在Android SDK中的build-tools/<version>/下找到。
然后执行

aapt d permissions /path/to/com.your.package.apk
iaqfqrcu

iaqfqrcu2#

最快的方法:adb shell转储程序包程序包名|grep权限

kq0g1dla

kq0g1dla3#

1.列出所有应用程序及其安装路径(如果您只对第三方应用程序感兴趣,请使用-3标记)。作为示例,让我们尝试找出YouTube应用程序权限。
adb shell pm list packages -f
输出:
...
package:/data/app/com.google.android.youtube-1.apk=com.google.android.youtube
...
1.从设备中拉出选定的APK:
adb pull /data/app/com.google.android.youtube-1.apk
1.列出权限
aapt d permissions com.google.android.youtube-1.apk
输出:

uses-permission: android.permission.BROADCAST_STICKY
    uses-permission: android.permission.CALL_PHONE
    uses-permission: android.permission.CALL_PRIVILEGED
    uses-permission: android.permission.WRITE_SETTINGS
    uses-permission: android.permission.WRITE_SECURE_SETTINGS
    uses-permission: android.permission.READ_CONTACTS
    uses-permission: android.permission.READ_CALL_LOG
    uses-permission: android.permission.WRITE_CONTACTS
    uses-permission: android.permission.WRITE_CALL_LOG
    uses-permission: android.permission.SYSTEM_ALERT_WINDOW
    uses-permission: android.permission.INTERNAL_SYSTEM_WINDOW
    uses-permission: android.permission.ADD_SYSTEM_SERVICE
    uses-permission: android.permission.VIBRATE
    uses-permission: android.permission.BLUETOOTH
    uses-permission: android.permission.BLUETOOTH_ADMIN
    uses-permission: android.permission.REORDER_TASKS
    uses-permission: android.permission.CHANGE_CONFIGURATION
    ...

...

n3h0vuf2

n3h0vuf24#

dumpsys不会给予你所有权限。获取所有默认Android权限的方法是使用dumpsys i.c.w. appops。有不同种类的权限;例如,一个接受allowdenyignoredefault,而另一个只接受falsetrueaapt并非在所有系统上都可用(尽管我非常喜欢它),因此我建议每个人都使用ADB,因为它是跨平台的。
一个简短的答案,而不是详细地获得所有权限:

  • adb shell pm list permissions列出随已安装应用程序(falsetrue)提供的权限
  • adb shell cmd appops get <package>列出每个应用程序的用户级别权限(allowdenyignore
  • adb shell dumpsys <package>列出了系统级别上每个应用程序的权限(grantrevoke

相关问题