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

28

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

Matt
источник

Ответы:

14

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

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

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

Matt
источник
2

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

поток
источник
0

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

user29020
источник
0

Поскольку ни одна версия 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

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

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

Повелитель огня
источник