使用adb,我如何才能找出Android应用程序需要哪些权限?通过adb列出Android应用程序的权限
因为我想在不同的设备上显示多个应用程序的权限,所以在Google Play
或Settings
>Applications manager
中查看它们需要太多的手动工作。
使用adb,我如何才能找出Android应用程序需要哪些权限?通过adb列出Android应用程序的权限
因为我想在不同的设备上显示多个应用程序的权限,所以在Google Play
或Settings
>Applications manager
中查看它们需要太多的手动工作。
我只是想杰森和了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
可以build-tools/<version>/
下在你的Android SDK中。
然后执行
aapt d permissions /path/to/com.your.package.apk
名单与他们的安装路径(即使用-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步?没有它,它工作得很好。 –
@DenisKniazhev'aapt'工具没有在adb外壳中提供 –
@coco_您说得对,我一定是在预先安装了'aapt'的情况下使用了一个仿真器。 –
快速的方法: 亚行外壳dumpsys包包名称| grep的许可
这只会列出已授予的权限,请参阅我的回答下方的 –
它是否只包含在其中包含单词“pemission”的权限? –
说,我注意到“adb shell dumpsys package”命令显示了许多关于应用程序的信息。它是否也可以显示应用程序正式使用的所有文件夹,例如外部存储设备(位于设备上的“/ storage/emulated/0/Android/data/PACKAGE_NAME”上)? –