在一个地方轻松审核应用程序权限?


28

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

Answers:


14

使用诸如Permission WatchdogPermissions之类的市场应用程序。另外,还有其他几个。


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

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

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

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

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




0

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

依存关系

  • 需要在PC中设置
  • 需要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

#检查/ data / local / tmp /或/ system / xbin下的busybox二进制文件是否存在。将检测到的二进制文件的路径设置到变量busybox中;如果文件不存在或未设置可执行权限,则退出
[[-x / data / local / tmp / busybox]] && busybox = / data / local / tmp / busybox || {[[--x / system / xbin / busybox]] && busybox = / system / xbin / busybox || {printf“找不到busybox二进制文件或未设置可执行权限。退出\ n” &&退出;}; }
#检查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” &&退出;}; }; }

#列出所有已安装应用程序的软件包名称,并将其保存在/ sdcard下的packages.txt文件中
pm列表包| $ busybox sed's / ^ package:// g'| $ busybox排序-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排序;
    $ 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

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.