【发布时间】:2014-02-01 04:23:40
【问题描述】:
使用 adb,我如何知道 Android 应用程序需要哪些权限?
因为我想在不同的设备上显示多个应用的权限,在Google Play或者Settings中查看>Applications manager需要太多的手动操作。
【问题讨论】:
标签: android permissions adb android-permissions aapt
使用 adb,我如何知道 Android 应用程序需要哪些权限?
因为我想在不同的设备上显示多个应用的权限,在Google Play或者Settings中查看>Applications manager需要太多的手动操作。
【问题讨论】:
标签: android permissions adb android-permissions aapt
我只是想将 Jason 和 Juuso 的答案结合在一起,并注意到前者列出了授予的权限,而后者列出了请求的权限(包括那些被授予)。
要查看仅授予的权限(但忽略已请求但未授予的权限),请使用
adb shell dumpsys package packagename
并检查输出底部的grantedPermissions 部分。
列出所有权限(已请求但未授予 + 已请求并已授予):
注意一个包的 APK。您可以运行相同的命令
adb shell dumpsys package packagename
并从其输出的codePath 元素中获取 APK 路径。
(如果您的设备/模拟器上没有 aapt)您需要从设备/模拟器中提取 apk,正如 Juuso Ohtonen 在他的回答中指出的那样。所以从你的桌面执行这样的事情:
adb pull /data/app/com.your.package.apk
列出包的所有权限
如果设备/模拟器中缺少 aapt,可以在您的 Android SDK 中的 build-tools/<version>/ 下找到。
然后执行
aapt d permissions /path/to/com.your.package.apk
【讨论】:
adb shell dumpsys package com.example | grep --color -E "granted=true|$"
列出所有应用程序及其安装路径(如果您只对第 3 方应用程序感兴趣,请使用 -3 标志)。例如,让我们尝试找出 YouTube 应用程序的权限。 adb shell pm list packages -f
输出:
...
包:/data/app/com.google.android.youtube-1.apk=com.google.android.youtube
...
从设备中拉取选定的 apk:adb pull /data/app/com.google.android.youtube-1.apk
使用 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
...
...
【讨论】:
aapt 工具未在 adb shell 中提供
aapt的模拟器。
快速方法: adb shell dumpsys 包包名 | grep 权限
【讨论】:
adb shell "dumpsys package packagename | grep permission"