无论如何,是否可以在一个页面上列出您手机上安装的所有应用程序及其所需的所有权限,或者将列表导出以方便审核?

#1 楼

使用市场应用程序,例如“权限看门狗”或“权限”。另外,还有其他几个。

评论


不幸的是,当安装应用程序时未列出所有权限时,Market应用程序存在错误(或预期功能?)。这可能与为较早的android版本设计的软件存在兼容性问题。code.google.com/p/android/issues/detail?id=9365

–丹尼斯·尼古拉连科(Denis Nikolaenko)
2010-12-02 13:49

也许在您的答案中加入评论会更简单。

–bbaja42
2010年12月3日,16:36

@Nikolaenko,显然是故意的,现在更改了:android.stackexchange.com/questions/605/…

–BlackShift
2010-12-24 14:30在

@BlackShift,“立即更改”是什么意思?由Android开发人员更改。球队?

–丹尼斯·尼古拉连科(Denis Nikolaenko)
2010-12-27 13:26

@Nikolaenko,我想我不清楚,因为我不清楚。我正在运行cyanogenmod 6,android 2.2,并且几乎所有应用都要求您隐式授予链接声明的权限。因此,我不知道是谁更改了此设置(cyanogen或android团队)。

–BlackShift
2010-12-27 14:45

#2 楼

我最终使用而不是“权限”使用的另一个应用程序是“ RL权限”。我更喜欢界面。至于哪一个更好,我不知道。

#3 楼

aSpotCat还是一个用于权限审核的好应用。

#4 楼

权限友好的应用程序将按需求最高到最低要求的顺序列出已安装的应用程序。 (不过,它实际上并不会跟踪,审核或调整其行为。)

#5 楼

由于问题中未提及Android版本,因此我提出了与Android 4.2.1及更高版本相关的基于命令行的答案。理想情况下,这是独立于OS的解决方案,即PC上的OS。

依赖项


要求在PC上设置adb。

需要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

# Check if the busybox binary exists under /data/local/tmp/ or /system/xbin. Set the detected binary's path into the variable busybox or exit if file doesn't exist or executable permission not set
[[ -x /data/local/tmp/busybox ]] && busybox=/data/local/tmp/busybox || { [[ -x /system/xbin/busybox ]] && busybox=/system/xbin/busybox || { printf "busybox binary not found or executable permission not set. Exiting\n" && exit; }; }
# Check if the aapt binary exists under /data/local/tmp or /system/bin or /system/xbin. Set the detected binary's path into the variable aapt or exit if file doesn't exist or executable permission not set
[[ -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 binary not found or executable permission not set. Exiting\n" && exit; }; }; }

# List package name of all the installed apps and save them in the file packages.txt under /sdcard
pm list packages | $busybox sed 's/^package://g' | $busybox sort -o /sdcard/packages.txt

# For each package name in the output we just saved, get the app's label using $path and $label, print a line and then finally list the permissions granted to the app 
while read line; do 
    path=$(pm path $line | $busybox sed 's/^package://g'); 
    label=$($aapt d badging $path  | $busybox grep 'application: label=' | $busybox cut -d "'" -f2);  
    $busybox printf "Permissions for app $label having package name $line\n"; 
    dumpsys package $line | $busybox sed -e '1,/grantedPermissions:/d' -e '/^\s*$/,$d' | $busybox sort;
    $busybox printf "\n"; 
done < /sdcard/packages.txt


演示输出:

Permissions for app DisableService having package name cn.wq.disableservice
      android.permission.READ_EXTERNAL_STORAGE
      android.permission.WRITE_EXTERNAL_STORAGE

Permissions for app Indecent Xposure having package name co.vanir.indecentxposure
      android.permission.RECEIVE_BOOT_COMPLETED

Permissions for app Tags having package name com.android.apps.tag
      android.permission.CALL_PHONE
      android.permission.NFC
      android.permission.READ_CONTACTS
      android.permission.WAKE_LOCK
      android.permission.WRITE_SECURE_SETTINGS
...
...
Permissions for app Themes Provider having package name 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的文件中,并使用

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


系统中安装的应用程序越多,命令完成的时间就越多执行。在我的设备上,大约花了三分钟。

相关:是否可以通过本机找到所有可以访问电话功能的已安装应用?