Разрешения на листинг приложения Android через adb
Используя adb, как я могу узнать, какие разрешения требуется для приложения Android?
Поскольку я хочу отображать разрешения нескольких приложений на разных устройствах, просмотр их в Google Play
или Settings
> Applications manager
требует слишком большой ручной работы.
Ответы
Ответ 1
Я просто хотел объединить ответы Джейсона и Юусо и заметить, что прежние списки разрешений были предоставлены, в то время как последний перечисляет разрешения, которые были запрошены (в том числе предоставленные).
Чтобы просмотреть только предоставленные разрешения (но пропущенные, которые были запрошены, но не предоставлены), используйте
adb shell dumpsys package packagename
и проверьте grantedPermissions
в нижней части вывода.
Чтобы просмотреть все разрешения (запрошенные, но не предоставленные + запрошенные и предоставленные):
-
Обратите внимание на APK пакета. Вы можете запустить ту же команду
adb shell dumpsys package packagename
и получить путь APK от элемента codePath
его вывода.
-
(если на вашем устройстве/эмуляторе нет aapt
), вам нужно будет вытащить apk из устройства/эмулятора, как указал Juuso Ohtonen в своем ответе. Так выполните что-то вроде этого со своего рабочего стола:
adb pull /data/app/com.your.package.apk
-
Список всех разрешений пакета
Если на устройстве/эмуляторе aapt
отсутствует файл build-tools/<version>/
, вы можете найти его в разделе build-tools/<version>/
в Android SDK.
Затем выполните
aapt d permissions /path/to/com.your.package.apk
Ответ 2
-
Список всех приложений вместе с их путями установки (используйте флаг -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
...
...
Ответ 3
Быстрый способ:
adb shell dumpsys package packagename | Разрешение grep