Аудит разрешений приложений легко в одном месте?

Можно ли как-то перечислить все приложения, установленные на вашем телефоне, и разрешения, которые им требуются, на одной странице или экспортировать список, чтобы его можно было легко проверить?

Ответы (5)

Используйте рыночные приложения, такие как Permission Watchdog или Permissions . Кроме того, есть несколько других.

К сожалению, в приложении Маркет есть баг (или задуманная фича?), когда при установке приложения указываются не все разрешения. Это может быть проблема совместимости с программным обеспечением, разработанным для более старых версий Android... code.google.com/p/android/issues/detail?id=9365
возможно, включение комментария в ваш ответ было бы проще.
@Николаенко, видимо, это специально и сейчас изменено: android.stackexchange.com/questions/605/…
@BlackShift, что вы подразумеваете под «сейчас изменилось»? Изменено разработчиком Android. команда?
@Николаенко, я думаю, что я был неясен, потому что это непонятно мне. Я использую cyanogenmod 6, android 2.2, и почти все приложения запрашивают разрешения, которые, по вашей ссылке, неявно предоставлены. Так что я не знаю, кто это изменил (команда цианогена или андроида).

Другое приложение, которое я использовал вместо Permissions , — это RL Permissions . Я предпочитаю интерфейс. Насчет того, какой из них работает лучше, я не знаю.

aSpotCat также является хорошим приложением для аудита разрешений.

Приложения, дружественные к разрешениям , будут отображать установленные приложения в порядке от наиболее требовательных к наименее требовательным требованиям к разрешениям. (Однако на самом деле он не отслеживает, не проверяет и не корректирует их поведение.)

Поскольку в вопросе не упоминается версия 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.
пакеты списка pm | $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 бейджинг $path | $busybox grep 'application: label=' | $busybox cut -d "'" -f2);  
    $busybox printf "Разрешения для приложения $label с именем пакета $line\n";
    пакет dumpsys $line | $busybox sed -e '1,/предоставлены разрешения:/d' -e '/^\s*$/,$d' | сортировка $busybox;
    $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
...
...
Разрешения для приложения Themes Provider с именем пакета org.cyanogenmod.themes.provider
      android.permission.ACCESS_NOTIFICATIONS
      android.permission.ACCESS_THEME_MANAGER
      android.permission.ИНТЕРНЕТ
      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

Чем больше приложений установлено в системе, тем больше времени потребуется для завершения выполнения команды. В моем устройстве это заняло около трех минут.

Связанный: есть ли собственный способ найти все установленные приложения, у которых есть доступ к функциям телефона?