使用adb,如何找出Android应用程序需要哪些权限?
因为我想在不同设备上显示多个应用程序的权限,所以请在Google Play
或Settings
>中查看这些权限。 Applications manager
需要过多的手工工作。
答案 0 :(得分:65)
我只想将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
列出软件包的所有权限
如果您的Android SDK中的aapt
下找不到设备/模拟器build-tools/<version>/
。
然后执行
aapt d permissions /path/to/com.your.package.apk
答案 1 :(得分:15)
列出所有应用程序及其安装路径(如果您只对第三方应用感兴趣,请使用-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
...
...
答案 2 :(得分:11)
快捷方式: adb shell dumpsys包packagename | grep权限