好在 Android 的精彩之处往往都在「第三方」,就在最近,老牌权限管理工具 App Ops 也迎来了 4.0 大版本更新。这次更新可以说是对 Android、iOS 甚至 MIUI(为什么会把 MIUI 并列出来?因为万物基于 MIUI)权限管理特性的一次全面集成。
免 root 也能使用
App Ops 与 Google 在原生 Android 中提供的系统服务 appops 同名,早年的 App Ops 主要提供一些功能增强,解决 appops 在交互和功能上难以覆盖的痛点并简化技术细节,让普通用户也能通过修改「应用操作」行为的方式达到权限管理的目的。
一点技术细节:其实 App Ops 更像是一款管理手机上所有应用的「行为」的教官,这些应用操作行为涵盖了大部分手机系统向用户提供的诸如 照相、录音、请求安装应用 这样的常见权限,也提供了系统没有开放给用户控制的应用操作,比如读取剪贴板内容、音频焦点等等。App Ops 实际上是一款把「应用操作行为」封装成「权限」并提供给用户进行控制的一款应用,也因此在 App Ops 中把 Android 系统对于应用操作的「忽略」(给予空白数据)统一写成了「拒绝」。
虽然随着近几年的更新 App Ops 在功能和设计上不断精进,它的上手和配置方法直到最近的 4.0 版本才发生较大变动。
在 App Ops 4.0 及以上的版本中,我们可以通过 Shizuku 框架和「托管设备管理员模式」两种方法来启动 App Ops。
通过 Shizuku 框架启动
你可以将 Shizuku 理解为一个类似 Magisk 框架的工具(尽管作用域要小得多),Magisk 为诸多定制模块提供了一个通用的挂载机制和管理平台,Shizuku 则为一些需要调用系统 API 的工具应用提供统一便利。详见:Shizuku 简介
Android 6.0:
adb shell sh /data/user/0/moe.shizuku.privileged.api/start.sh
Android 7.0 及以上:
adb shell sh /data/user_de/0/moe.shizuku.privileged.api/start.sh
请根据应用内提示进行操作
和其他使用 adb 指令运行的工具类似的,这个指令的效果也会随着手机重启、USB 调试开关状态的变化而关闭,具体而言,免 root 情况下每次手机开机时都需要我们重复上面的启动步骤。
通过「托管设备管理员模式」启动
如果你的手机没有获取 root 权限,同时又觉得开机时通过 adb 启动 Shizuku 的步骤过于繁琐,也可以通过 adb 启用「托管设备管理员模式」的方法来简化 Shizuku 的启动流程 —— 相应的,这种做法也增加了前期准备的工作量,涉及到删除设备上现有账号、多用户数据、安装第三方应用、设置管理员应用等等操作,请根据实际情况选择。
和常见 adb 启动方式不同,通过 adb 为 App Ops 开启「托管设备管理员模式」需要「借力」:先在特定的第三方应用中设置管理员模式,然后借助「设备管理员」身份授予 App Ops 修改 appops 操作行为的能力。
这里以操作流程相对简单的冰箱 IceBox 为例。
从 酷安 下载安装冰箱后,确保操作系统版本为 Android 9 及以上,同时电脑端 adb 环境 配置 正确。然后执行以下步骤:
删除手机上已经添加的所有账号(一般位于「系统设置 >账户」中),如 Google 同步账号、小米云服务账号等等
删除手机访客模式 / 多用户模式中除当前用户外的其他用户,一些定制系统的应用双开、平行空间功能也需一并关闭
手机开启 USB 调试模式,连接电脑并授予 USB 调试权限
电脑端打开命令行工具,执行 adb shell dpm set-device-owner com.catchingnow.icebox/.receiver.DPMReceiver
索尼、小米等特定 OEM 厂商的机型还有一些特别的注意事项,具体可参见冰箱开发者的在线 帮助文档。
还需要额外授予「修改 app ops」权限
命令执行成功后,我们就可以把刚刚删除的账号添加回来了。此时回到 App Ops 并选择「托盘设备管理员模式」模式,在接下来弹出的窗口中勾选允许「修改 app ops」并点击确定。
接下来我们还需要授予 App Ops 获取 app ops 权限:同样将手机通过 USB 调试与电脑相连,执行:
adb shell pm grant --user 0 rikka.appops android.permission.GET_APP_OPS_STATS
如果你是多用户、访客模式这类功能的用户,则还需要将上述命令中的 --user 0 替换为对应的 user id 进行授权,user id 的获取指令如下:
adb shell pm list users
返回的 UserInfo{X:Owner:13} running 中的 X 即为用户 id。最后,为了让 App Ops 拥有访问其他用户的权限,你还需要运行下面这条指令:
adb shell pm grant --user 0 rikka.appops android.permission.INTERACT_ACROSS_USERS
除了冰箱 Icebox,你也可以借助其他工具(如 小黑屋、Island 等)的管理员模式来完成上述步骤,具体方法应工具而异。
总体而言,在 root 模式被移除之后,选择 Shizuku 启动 App Ops 的便捷性优势越发凸显。如果你同时也在使用 Rikka Apps 系列的其他应用,Shizuku 也可以作为一个通用的激活手段,一鸡多吃。
要求第三方工具便利性功能性Shizukuroot无需非常方便剪贴板监视免 root(adb)无需不方便 / 托管设备管理员免 root需要一劳永逸/ root 直接启动 root(最新版已移除)无需非常方便 /
至于 Shizuku 相比直接 root 启动的模式优势究竟有哪些,可以参阅 这里 和 这里。
一个应用搞定敏感权限
启动 App Ops 等待应用列表加载完毕,一扇新的大门就已经向我们敞开了,接下来我们需要面对的问题自然也就变成了「哪些权限需要管理」以及「如何管理」。
点面结合的管理方法
无论在哪种模式下,下面这些权限都值得你仔细审查和管理。
电话、短信、通讯录:隐私数据三件套
相机、麦克风:偷窥、偷录防范
后台运行:保卫你的手机续航
剪贴板读写:最近的热门话题
App Ops 提供了 按应用 和 按权限 两种管理视图(你可以在侧栏导航菜单中进行切换),两种视图模式均提供了对应的排序和系统应用筛选工具。
两种查看视图
以某 B 应用为例,如果你不想它读取你的联系人信息,害怕它悄悄开启前置摄像头看看现实世界中的你,反感每次进入前台运行时它都会读取一次剪贴板同时往你的剪贴板里塞上一段返利文本,更不希望它在后台不断唤醒消耗电量……
在应用视图下,我们可以通过搜索找到该应用,然后:
在权限列表中想要管理的权限条目右侧点击打开管理菜单,选择禁用允许、拒绝或仅在应用使用期间允许。
在权限列表左侧的图标上点击触发多选,选择所有想要操作的权限条目,然后通过顶部菜单进行批量授权。
在权限视图下,管理的粒度则跳出了单个应用的范畴,允许我们直接选择对应权限,然后遍历符合条件的应用进行管理。
集中管理后台运行行为
这种视图对于集中管理需求而言格外方便,比如我需要批量为手机里的国产应用进行严格限制,就只需要在权限视图中找到 在后台运行,然后定位那些需要进行后台限制的应用并取消勾选即可。
特殊权限特殊对待
而对于相机、麦克风、文件读写这类权限来说,「仅在应用使用期间允许」也是一个非常强力的管理手段,配合严格限制的后台运行策略,理论上来说既能保证应用功能的正常运行,又能防止它们在后台做一些偷鸡摸狗的勾当。
善用这个特殊的允许条件
剪贴板监视功能介绍
开启剪贴板监视功能后,App Ops 会通过 toast 弹窗的样式实时提醒我们剪贴板读写行为;这个比 iOS 14 更加灵活的地方在于,如果你在管理权限的过程中已经禁止了某 B 应用读取你的剪贴板,但实际使用过程中偶尔又确实需要它读取那么一两次,可以在 toast 通知上直接点击「允许 5 秒」来为其短暂放行。
灵活的「允许 5 秒」
这种机制既方便了单次使用,又杜绝了长期的隐私安全隐患,甚至可以说是一个值得 iOS、Android 系统级功能借鉴的小特性。
用模板减少配置成本
说了这么多,你可能会问:
这么多权限,如果我手机里装了一两百个应用,无论从哪个维度进行管理不都很麻烦吗?
并非所有的应用都需要通过 App Ops 来进行管理。不那么守规矩的应用毕竟是少数,对于那些大家个人感觉比较放心的应用,我们大可以相信 Android 自带的权限管理机制。
另一方面,如果手机里需要借助 App Ops 进行权限管理的应用实在不少,App Ops 也准备了一个方便套用的模板功能可供选择。
使用模板功能提高管理效率
比如就「国产『毒瘤』应用不给电话、短信、通讯录权限,仅在运行时允许相机、麦克风,严格限制后台运行和剪贴板读写」这种比较通用、普适的管理理念而言,我们完全可以在模板中实现设定好对应的权限细则,然后再批量选中符合条件的应用直接一键套用模板。
经过一番调校和设置之后,我们也可以将所有改动过的权限设置进行备份、恢复,方便在刷机、换机后快速恢复,减少重复设置流程。
为辛苦设置的权限偏好备份
注:但不建议跨系统版本(尤其是大版本)恢复备份,因为不同系统版本的 app ops 数量不同,跨版本恢复可能会导致问题。
另外,模板功能还可以搭配侧栏导航菜单中的「新应用行为」工作,比如直接在应用安装完成后通过 App Ops 的后台监视通知一键恢复备份或套用模板。
针对新应用立即进行权限调整
小结
在 App Ops 4.0 的侧栏导航菜单中你或许也留意到了,灵活、可控的剪贴板监视功能并非 App Ops 4.0 的唯一亮点 —— 侧栏导航菜单中,一个名为「使用历史记录」也显示正在开发当中(Coming soon)。结合 App Ops 的现有特性和这个功能的名称可以推断,这应该是一个可以提供完整的权限、应用操作调用历史记录的功能。届时,非小米机型也能通过 App Ops 感受到 MIUI 12 那颗「照明弹」的正道之光。
显然,这款已经在 Play 商店上架 4 年的应用,在权限管理这件事情上很多理念和细节其实已经走在了 iOS 14 和 Android 11 之前。
用户评论
终于来了!我一直觉得Android权限管理不够细致,比iOS还是逊色挺多的。希望新一代 AppOps能彻底解决这个问题,让用户对各种app的访问权限更全面地控制。
有5位网友表示赞同!
这个App Ops 4.0听起来很酷哦!期待它能给Android带来更加强大的权限管理功能,就像 iOS那样强大!
有14位网友表示赞同!
真的希望这次更新能让我真正掌控我的手机了!之前虽然有部分权限管理功能,但很多操作还是比较复杂,太不人性化了。希望能看到App Ops 4.0能够让人更容易理解和操作。
有7位网友表示赞同!
Android 的用户一直都在期待更完善的权限控制,希望这次 AppOps 能真正实现这一点,不再像以前那样只能粗略地选择允许或拒绝!
有19位网友表示赞同!
我一直觉得 Android 这块做的不太好,各种信息和权限都给App开放了,这样感觉很不安全。希望能通过 App Ops 4.0 更好地保护我的隐私!
有13位网友表示赞同!
iOS 的权限管理确实做得非常出色,Android 也应该向它学习,更加精细化地控制不同应用对手机资源的访问。希望 App Ops 4.0 能像iOS那样好用!
有11位网友表示赞同!
我是个IT从业者,一直觉得 Android 的权限管理系统不够完整和灵活。期待新的 App Ops 可以提供更丰富的策略选项,让开发者更好地管理 app 自身的权限需求。
有5位网友表示赞同!
这个东西靠谱吗?听起来很高端吧!我不会用这些超复杂的功能,我只要能简单地拒绝手机访问我的位置信息就够了。
有10位网友表示赞同!
希望 App Ops 4.0 能真正提高 Android 的安全性,不要只是宣传力度大,结果还是一潭死水。
有10位网友表示赞同!
Android 系统一直以来权限管理都比较麻烦,而且不像 iOS 一样清晰,让人无法理解哪些权限被申请了!这回是不是又变成复杂的操作?别到时候让人看不懂就更糟糕了!
有12位网友表示赞同!
期待 App Ops 4.0 能带来一个更加安全、更加便捷的Android体验。 我真的厌倦了各种APP私自访问我的信息,希望我能更好地掌控自己的隐私和数据。
有17位网友表示赞同!
我感觉 Android 的权限管理一直都是个问题,特别是最近随着越来越多的应用需要获取不同类型的人机交互资源,我觉得这个 App Ops 4.0 可能是个比较重要的更新!
有5位网友表示赞同!
我还是觉得 Android 的系统操作性不如 iOS流畅。很多功能听起来很酷,但实际使用下来可能又不够简洁易用.
有16位网友表示赞同!
这也太理论了,我只想看最终效果好不好用!期待 App Ops 4.0 能真正解决Android权限管理的痛点,带来实质性的提升!
有12位网友表示赞同!
Android 系统的确存在一些安全隐患和权限过度申请的问题。希望这次更新能够增强用户隐私保护功能,让 Android 更安全可靠!
有18位网友表示赞同!
对于 App Ops 4.0 我比较谨慎乐观,毕竟安卓系统每次更新都有些让人摸不着头脑,搞得一团糟! 期待它能真的帮我们更好地管理手机应用的权限。
有18位网友表示赞同!