2014-01-13 177 views
28

使用adb,我如何才能找出Android應用程序需要哪些權限?通過adb列出Android應用程序的權限

因爲我想在不同的設備上顯示多個應用程序的權限,所以在Google PlaySettings>Applications manager中查看它們需要太多的手動工作。

回答

45

我只是想傑森和了Juuso的回答組合在一起,並注意到這是授予,而那名後者列出的權限要求(包括授予的那些)前列表的權限。

只要查看被授予(已請求但未授予但省略的)權限使用

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可以build-tools/<version>/下在你的Android SDK中。

    然後執行

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

說,我注意到「adb shell dumpsys package」命令顯示了許多關於應用程序的信息。它是否也可以顯示應用程序正式使用的所有文件夾,例如外部存儲設備(位於設備上的「/ storage/emulated/0/Android/data/PACKAGE_NAME」上)? –

13
  1. 名單與他們的安裝路徑(即使用-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 
    ... 

...

+0

尼斯的答案,但你爲什麼需要第2步?沒有它,它工作得很好。 –

+0

@DenisKniazhev'aapt'工具沒有在adb外殼中提供 –

+0

@coco_您說得對,我一定是在預先安裝了'aapt'的情況下使用了一個仿真器。 –

9

快速的方法: 亞行外殼dumpsys包包名稱| grep的許可

+0

這隻會列出已授予的權限,請參閱我的回答下方的 –

+0

它是否只包含在其中包含單詞「pemission」的權限? –