Ответы:
Используйте рыночные приложения, такие как Permission Watchdog или Permissions . Также есть несколько других.
Другое приложение, которое я использовал вместо Permissions, - RL Permissions . Я предпочитаю интерфейс. Насколько работает лучше, я не знаю.
В приложениях с правами доступа будут перечислены установленные приложения в порядке их соответствия самым требовательным и наименее требовательным требованиям к разрешениям. (Хотя на самом деле он не отслеживает, не проверяет и не корректирует их поведение.)
Поскольку ни одна версия Android не упоминается в этом вопросе, я предлагаю ответ на основе командной строки, относящийся к Android версии 4.2.1 и выше. В идеале это независимое от ОС решение, то есть ОС на ПК.
Требуется двоичный файл busybox . Если устройство рутировано, установите приложение Busybox . Иначе, загрузите двоичный файл busybox из официального источника , переименуйте двоичный файл в busybox , установите совместимые с Linux исполняемые права доступа для этого двоичного файла для всех и переместите его на устройство, используя
adb push LOCAL_FILE /data/local/tmp/ # LOCAL_FILE is the file path where busybox binary is located in PC
Требуется AAPT бинарный. Если вы используете CM или его производное ПЗУ, игнорируйте это требование. В противном случае, для Android 4.x вы можете скачать бинарный файл отсюда , переименовать бинарный файл в aapt , установить совместимое с Linux разрешение на выполнение исполняемого файла для этого бинарного файла для всех и переместить его на устройство, используя
adb push LOCAL_FILE /data/local/tmp/ # LOCAL_FILE is the file path where busybox binary is located in PC .
Для пользователей Android 5.x обратитесь за помощью в Google.
Вот мой маленький скрипт, который делает магию:
#! / Система / бен / ш # Проверьте, существует ли двоичный файл busybox в / data / local / tmp / или / system / xbin. Установите путь обнаруженного двоичного файла в переменную busybox или завершите работу, если файл не существует или не задано разрешение на выполнение [[-x / data / local / tmp / busybox]] && busybox = / data / local / tmp / busybox || {[[-x / system / xbin / busybox]] && busybox = / system / xbin / busybox || {printf "двоичный файл busybox не найден или исполняемое разрешение не установлено. Выход \ n" && exit; }; } # Проверьте, существует ли бинарный файл aapt в / data / local / tmp или / system / bin или / system / xbin. Установите путь обнаруженного двоичного файла в переменную aapt или выйдите, если файл не существует или не задано разрешение на выполнение [[-x / data / local / tmp / aapt]] && aapt = / data / local / tmp / aapt || {[[-x / system / bin / aapt]] && aapt = / system / bin / aapt || {[[-x / system / xbin / aapt]] && aapt = / system / xbin / aapt || {printf "бинарный файл aapt не найден или исполняемое разрешение не установлено. Выход \ n" && exit; }; }; } # Перечислите имя пакета всех установленных приложений и сохраните их в файле packages.txt в / sdcard вечера список пакетов | $ busybox sed 's / ^ package: // g' | $ busybox sort -o /sdcard/packages.txt # Для каждого имени пакета в только что сохраненном выводе получите метку приложения, используя $ path и $ label, напечатайте строку и, наконец, перечислите разрешения, предоставленные приложению пока читаешь строку; делать path = $ (pm path $ line | $ busybox sed 's / ^ package: // g'); label = $ ($ aapt d badging $ path | $ busybox grep 'application: label =' | $ busybox cut -d "'" -f2); $ busybox printf "Разрешения для приложения $ label, имеющего имя пакета $ line \ n"; пакет dumpsys $ line | $ busybox sed -e '1, / grantPermissions: / d' -e '/ ^ \ s * $ /, $ d' | $ busybox sort; $ busybox printf "\ n"; сделано </sdcard/packages.txt
Демо выход:
Разрешения для приложения DisableService с именем пакета cn.wq.disableservice android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE Разрешения для приложения Indecent Xposure с именем пакета co.vanir.indecentxposure android.permission.RECEIVE_BOOT_COMPLETED Разрешения для тегов приложения, имеющих имя пакета com.android.apps.tag android.permission.CALL_PHONE android.permission.NFC android.permission.READ_CONTACTS android.permission.WAKE_LOCK android.permission.WRITE_SECURE_SETTINGS ... ... Разрешения для провайдера тем приложения с именем пакета org.cyanogenmod.themes.provider android.permission.ACCESS_NOTIFICATIONS android.permission.ACCESS_THEME_MANAGER android.permission.INTERNET android.permission.READ_THEMES android.permission.WRITE_SECURE_SETTINGS android.permission.WRITE_SETTINGS android.permission.WRITE_THEMES
Сохраните скрипт на ПК в файл с именем perm_script.sh
и переместите его в / sdcard, используя
adb push LOCAL_FILE /sdcard/ # LOCAL_FILE is the path where you saved that file into PC
Запустите этот файл
adb shell sh /sdcard/perm_script.sh > OUTPUT_FILE # OUTPUT_FILE is the path where you want to save the final output
Чем больше приложений установлено в системе, тем больше времени будет для завершения команды. В моем устройстве это заняло около трех минут.
Связанный: Есть ли родной способ найти все установленные приложения, которые имеют доступ к функции телефона?