回答:
Permission WatchdogやPermissionsなどの市場アプリケーションを使用します。また、他にもいくつかあります。
私がPermissionsの代わりに使用することになった別のアプリはRL Permissionsです。私はインターフェースが好きです。どちらがうまく機能するかはわかりません。
Permission Friendly Appsは、最も要求の厳しいアクセス要件から最も要求の少ないアクセス許可要件の順にインストールされたアプリをリストします。(ただし、実際に動作を追跡、監査、調整することはありません。)
質問にはAndroidバージョンが記載されていないため、Androidバージョン4.2.1以降に関連するコマンドラインベースの回答を提案しています。これは、理想的には、OSに依存しないソリューション、つまりPC上のOSです。
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またはその派生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に設定するか、ファイルが存在しないか、実行許可が設定されていない場合に終了します [[-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; }; }; } #インストールされているすべてのアプリのパッケージ名をリストし、/ sdcardの下のファイルpackages.txtに保存します 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 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 sort; $ 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分かかりました。