AppOps 命令大全

AppOps应对Android应用流氓权限行为及肆无忌惮的后台服务

AppOps是Android 自4.3加入的应用权限授权管理框架,虽然到了后来6.0引入了另外一套方案Android Runtime Permission,但是 AppOps并没有被废弃掉,它依然存在于系统框架内,只不过没有图形管理入口而已,但是依然保留并增加了API,而且AppOps命令行管理工具依然可用。我们所用到的就是AppOps Command line utility。

所有的OP(Operations),即操作权限列表

appops 命令是Android系统的可执行程序,我们要运行,需要使用电脑USB连接手机并开启开发者调试,使用 adb shell [-e escape] [-n] [-Tt][-x] [command] 运行远程shell命令(如果没有给定命令则开启交互的shell终端) 在Android系统内执行shell命令。

现在,我们就要拿微信来举个例子,微信中文版在Android 6.0下强制要求读取电话状态信息定位读取写入外置存储权限,否则应用强制无法正常使用。我不知道大家怎么看待,我个人认为这三个权限都是可选的权限,微信就是在耍流氓。而我们就可以使用AppOps将其某项强制要求权限忽略掉,注意这里说的是忽略掉而不是禁用,如果单纯禁用在Android Runtime Permission内即可做到,但是微信可以感知到自己的权限被禁用,就会流氓的提示你应用无法使用。而AppOps可以忽略应用的权限申请,但是这个应用本身是无法感知判断的。在这里我们尝试禁用微信的读取电话状态信息权限、位置定位权限和后台服务运行权限(这个导致无法后台收消息):

通过上面的操作,微信已经无法获取上述权限,而且再退出微信应用后,几分钟后微信后台服务(注意Foreground Service不会被关掉)都会被系统关掉,但是微信应用本身的主进程依然是作为空进程缓存在内存中,而不是被整个杀掉。

作为Android开发者,真心希望大家能够尽可能的克制规范自己的行为,少申请一些非必要权限,少运行一些后台活跃唤醒服务。

你可能感兴趣的:(AppOps 命令大全)