使用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」上)? –