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

问题描述 投票:0回答:4

使用adb,如何找出Android应用程序需要哪些权限?

因为我要显示多个应用程序在不同设备上的权限,所以在

Google Play
Settings
>
Applications manager
中查看需要太多的手动工作。

android permissions adb android-permissions aapt
4个回答
134
投票

我只是想将JasonJuuso的答案结合在一起,并注意到前者列出了授予的权限,而后者列出了请求的权限(包括已授予的权限)。

要查看仅授予的权限(但忽略已请求但未授予的权限)使用

adb shell dumpsys package packagename

并检查输出底部的

grantedPermissions
部分。

列出所有权限(请求但未授予+请求并授予):

  1. 注意软件包的APK。您可以运行相同的命令

    adb shell dumpsys package packagename
    

    并从其输出的

    codePath
    元素获取 APK 路径。

  2. (如果您的设备/模拟器上没有

    aapt
    )您需要从设备/模拟器中提取 apk,正如 Juuso Ohtonen 在他的回答中指出的那样。因此,从您的桌面执行类似的操作:

    adb pull /data/app/com.your.package.apk
    
  3. 列出包的所有权限

    如果设备/模拟器中缺少

    aapt
    ,可以在 Android SDK 中的
    build-tools/<version>/
    下找到。

    然后执行

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

30
投票

快速方法: adb shell dumpsys 包 包名 | grep 权限


22
投票
  1. 列出所有应用程序及其安装路径(如果您只对第 3 方应用程序感兴趣,请使用

    -3
    标志)。作为示例,我们尝试找出 YouTube 应用权限。
    adb shell pm list packages -f


    输出:

    ...
    包:/data/app/com.google.android.youtube-1.apk=com.google.android.youtube
    ...

  2. 从设备中拉取所选的 apk:

    adb pull /data/app/com.google.android.youtube-1.apk

  3. 使用
    列出权限

    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
    ...

...


5
投票

dumpsys
不会给您所有权限。获取所有默认 Android 权限的一种方法是使用
dumpsys
i.c.w。
appops
。有不同类型的权限;例如,一个接受
allow
deny
ignore
default
,另一个接受
false
true
aapt
并非在所有系统上都可用(虽然我非常喜欢它),所以我敦促大家使用
ADB
,因为它是跨平台的。

一个简短的答案,无需详细说明即可获得所有权限:

  • adb shell pm list permissions
    列出了附带的权限 已安装的应用程序(
    false
    true
  • adb shell cmd appops get <package>
    列出权限 每个应用程序的用户级别 (
    allow
    deny
    ignore
    )
  • adb shell dumpsys <package>
    列出系统上每个应用程序的权限 级别(
    grant
    revoke
© www.soinside.com 2019 - 2024. All rights reserved.