답변:
Permission Watchdog 또는 Permissions 와 같은 시장 응용 프로그램을 사용하십시오 . 또한 여러 가지가 있습니다.
내가 권한 대신에 사용했던 또 다른 앱 은 RL Permissions 입니다. 나는 인터페이스를 선호한다. 어느 쪽이 더 잘 작동하는지는 모르겠습니다.
Permission Friendly Apps 는 가장 까다로운 권한 요구 사항에서 가장 까다로운 순서로 설치된 앱을 나열합니다. (실제로 행동을 추적하거나 감사하거나 조정하지는 않습니다.)
이 질문에 Android 버전이 언급되어 있지 않으므로 Android 버전 4.2.1 이상과 관련된 명령 줄 기반 답변을 제안하고 있습니다. 이것은 OS에 독립적 인 솔루션 인 PC의 OS입니다.
비지 박스 바이너리가 필요합니다 . 기기가 루팅 된 경우 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 또는 파생 ROM을 실행중인 경우이 요구 사항을 무시하십시오. 그렇지 않으면 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에 도움을 요청하십시오.
다음은 마법을 수행하는 작은 스크립트입니다.
#! / system / bin / sh # 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 또는 exit로 설정하십시오. [[-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 "적응 이진을 찾을 수 없거나 실행 권한이 설정되지 않았습니다. 종료 \ n"&& exit; }; }; } # 설치된 모든 앱의 패키지 이름을 나열하고 / sdcard 아래의 packages.txt 파일에 저장하십시오. 오후 목록 패키지 | $ busybox sed 's / ^ package : // g'| $ busybox sort -o /sdcard/packages.txt # 방금 저장 한 출력의 각 패키지 이름에 대해 $ path 및 $ label을 사용하여 앱의 레이블을 가져 와서 행을 인쇄 한 다음 앱에 부여 된 권한을 나열 줄을 읽는 동안; 해야 할 것 path = $ (pm 경로 $ line | $ busybox sed 's / ^ package : // g'); label = $ ($ aapt d badging $ path | $ busybox grep 'application : label ='| $ busybox cut -d " '"-f2); $ busybox printf "패키지 이름이 $ line \ n 인 앱 $ label에 대한 권한"; dumpsys 패키지 $ line | $ busybox sed -e '1, / grantedPermissions : / d'-e '/ ^ \ s * $ /, $ d'| $ busybox 정렬; $ busybox printf "\ n"; 완료 </sdcard/packages.txt
데모 출력 :
패키지 이름이 cn.wq.disableservice 인 앱 DisableService에 대한 권한 android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE 패키지 이름이 co.vanir.indecentxposure 인 앱 Indecent Xposure에 대한 권한 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
PC의 스크립트를 파일 이름으로 저장하고 다음을 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
시스템에 설치된 앱이 많을수록 명령 실행 시간이 길어집니다. 내 장치에서는 약 3 분이 걸렸습니다.