Czy łatwo kontrolować uprawnienia aplikacji w jednym miejscu?

28

Czy w ogóle można wyświetlić listę wszystkich aplikacji zainstalowanych w telefonie i wymaganych uprawnień na jednej stronie lub wyeksportować listę, aby można ją było łatwo skontrolować?

Matt
źródło

Odpowiedzi:

14

Korzystaj z aplikacji rynkowych, takich jak Watchdog uprawnień lub Uprawnienia . Jest też kilka innych.

Denis Nikolaenko
źródło
Niestety, aplikacja Market ma błąd (lub zamierzoną funkcję?), Gdy nie wszystkie uprawnienia są wymienione podczas instalowania aplikacji. Może to powodować problem ze zgodnością oprogramowania przeznaczonego dla starszych wersji Androida ... code.google.com/p/android/issues/detail?id=9365
Denis Nikolaenko
2
być może włączenie komentarza do ciebie byłoby prostsze.
bbaja42,
@Nikolaenko, najwyraźniej jest to celowe i zmienione teraz: android.stackexchange.com/questions/605/…
BlackShift,
@ BlackShift, co rozumiesz przez „teraz zmieniony”? Zmieniono przez Androida dev. zespół?
Denis Nikolaenko
@Nikolaenko, myślę, że byłem niejasny, ponieważ dla mnie jest niejasny. Korzystam z programu cyjanogenmod 6, Androida 2.2 i prawie wszystkie aplikacje proszą o uprawnienia, które niejawnie są przyznawane przez twój link. Więc nie wiem, kto to zmienił (zespół cyjanogenowy lub android).
BlackShift,
4

Inną aplikacją, której używałem zamiast uprawnień,uprawnienia RL . Wolę interfejs. Jeśli chodzi o to, który z nich działa lepiej, nie wiem.

Matt
źródło
0

Aplikacje przyjazne dla uprawnień wyświetlą listę zainstalowanych aplikacji według kolejności od najbardziej wymagających do najmniej wymagających wymagań dotyczących uprawnień. (Jednak tak naprawdę nie śledzi ani nie kontroluje ich zachowania.)

użytkownik29020
źródło
0

Ponieważ w pytaniu nie wymieniono żadnej wersji Androida, proponuję odpowiedź opartą na wierszu polecenia, dotyczącą wersji Android 4.2.1 i nowszych. Idealnie jest to rozwiązanie niezależne od systemu operacyjnego, czyli OS na PC.

Zależności

  • Wymaga skonfigurowania na PC.
  • Wymaga pliku binarnego busybox . Jeśli urządzenie jest zrootowane , zainstaluj aplikację Busybox . W przeciwnym razie pobierz plik binarny busybox z oficjalnego źródła , zmień nazwę pliku binarnego na zajęty , ustaw dla wszystkich plików binarnych uprawnienia do wykonywania tych plików i przenieś je na urządzenie za pomocą

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC
    
  • Wymaga aapt binary. Jeśli korzystasz z CM lub pochodnej pamięci ROM, zignoruj ​​to wymaganie. W przeciwnym razie dla Androida 4.x możesz rozważyć pobranie pliku binarnego z tego miejsca , zmianę nazwy pliku binarnego na aapt , ustawienie dla wszystkich plików binarnych uprawnień do wykonywania tego pliku binarnego dla wszystkich i przeniesienie go na urządzenie za pomocą

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC . 
    

    W przypadku użytkowników Androida 5.x poproś Google o pomoc.

Oto mój mały skrypt, który robi magię:

#! / system / bin / sh

# Sprawdź, czy plik binarny busybox istnieje w / data / local / tmp / lub / system / xbin. Ustaw ścieżkę wykrytego pliku binarnego do zmiennej busybox lub zakończ, jeśli plik nie istnieje lub nie ustawiono uprawnień do wykonywania
[[-x / data / local / tmp / busybox]] && busybox = / data / local / tmp / busybox || {[[-x / system / xbin / busybox]] && busybox = / system / xbin / busybox || {printf "nie znaleziono pliku binarnego busybox lub nie ustawiono uprawnień do wykonywania. Wyjście \ n" && exit; }; }
# Sprawdź, czy plik binarny Aapt istnieje w katalogu / data / local / tmp lub / system / bin lub / system / xbin. Ustaw ścieżkę wykrytego pliku binarnego w zmiennej aapt lub zakończ, jeśli plik nie istnieje lub nie ustawiono uprawnień do wykonywania
[[-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 "nie znaleziono pliku binarnego aapt lub nie ustawiono uprawnień do wykonywania. Wyjście \ n" && exit; }; }; }

# Wyświetl nazwę pakietu wszystkich zainstalowanych aplikacji i zapisz je w pliku packages.txt w / sdcard
pakiety listy pm | $ busybox sed 's / ^ package: // g' | $ busybox sort -o /sdcard/packages.txt

# Dla każdej nazwy pakietu w zapisanym właśnie wyjściu, pobierz etykietę aplikacji za pomocą $ path i $ label, wydrukuj linię, a następnie na końcu wypisz uprawnienia przyznane aplikacji 
podczas odczytu linii; robić
    ścieżka = $ (pm ścieżka $ linia | $ busybox sed 's / ^ pakiet: // g'); 
    label = $ ($ aapt d znaczenie $ path | $ busybox grep 'aplikacja: label =' | $ busybox cut -d "'" -f2);  
    $ busybox printf "Uprawnienia do aplikacji $ label o nazwie pakietu $ line \ n"; 
    pakiet dumpsys $ line | $ busybox sed -e '1, / grantPermissions: / d' -e '/ ^ \ s * $ /, $ d' | $ busybox sort;
    $ busybox printf "\ n"; 
gotowe </sdcard/packages.txt

Wyjście demo:

Uprawnienia dla aplikacji DisableService o nazwie pakietu cn.wq.disableservice
      android.permission.READ_EXTERNAL_STORAGE
      android.permission.WRITE_EXTERNAL_STORAGE

Uprawnienia dla aplikacji Indecent Xposure o nazwie pakietu co.vanir.indecentxposure
      android.permission.RECEIVE_BOOT_COMPLETED

Uprawnienia do tagów aplikacji o nazwie pakietu com.android.apps.tag
      android.permission.CALL_PHONE
      android.permission.NFC
      android.permission.READ_CONTACTS
      android.permission.WAKE_LOCK
      android.permission.WRITE_SECURE_SETTINGS
...
...
Uprawnienia dla aplikacji Motywy aplikacji o nazwie pakietu 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

Zapisz skrypt na PC w pliku o nazwie perm_script.shi przenieś go do / sdcard za pomocą

adb push LOCAL_FILE /sdcard/   # LOCAL_FILE is the  path where you saved that file into PC

Uruchom ten plik

adb shell sh /sdcard/perm_script.sh > OUTPUT_FILE   # OUTPUT_FILE is the path where you want to save the final output

Im więcej aplikacji zainstalowanych w systemie, tym dłuższy będzie czas na wykonanie polecenia. W moim urządzeniu zajęło to około trzech minut.

Powiązane: Czy istnieje natywny sposób na znalezienie wszystkich zainstalowanych aplikacji, które mają dostęp do funkcji telefonu?

Firelord
źródło