appmanager 中文文档 下载 App

App Ops 权限控制——比运行时权限更细粒度

为什么需要 App Ops

Android 的运行时权限是「全有或全无」:要么给定位权限要么不给。但你可能更想要「这个应用在前台时才能定位,后台别定位」——运行时权限做不到。

App Ops(Application Operations) 就是 Android 底层更细粒度的操作权限控制机制,比运行时权限的粒度细得多。

App Ops 的四种模式

App Manager 里每个权限/操作可以设成:

模式含义
允许正常使用(等价于运行时权限已授予)
拒绝完全不能使用(等价于运行时权限已拒绝)
仅前台允许应用在前台时可以用,退到后台自动禁用
用户感知每次操作都弹窗问用户

可用的模式跟 Android 版本有关——新版本 Android 提供了更多可选模式,旧版本可能只有允许/拒绝两个选项。

怎么在 App Manager 里改

  1. 应用详情页 → 权限标签
  2. 切到 App Ops 视图(跟常规权限分开)
  3. 找到要改的操作(比如 ACCESS_FINE_LOCATION)
  4. 点它 → 弹出模式选择对话框
  5. 选好后即时生效
App Ops
App Manager 的 App Ops 管理界面

能控制哪些操作

App Ops 能控制的不止是常规的危险权限——还能控制很多运行时权限管不到的东西:

操作类型例子
位置前台定位、后台定位
存储读/写外部存储、管理所有文件
后台唤醒、闹钟、精确闹钟
通知POST_NOTIFICATIONS、前台服务类型
剪贴板访问剪贴板
短信/通话发送短信、读取通话记录
相机/麦克风前后台分别控制

App Manager 把这些操作集中展示在权限标签页里,比系统设置里分散在各处的权限控制高效得多。

权限要求

修改 App Ops 需要:

App Ops vs 组件拦截

工具做了什么恢复方法
App Ops修改系统对某个操作的「允许/拒绝/前台」策略改回允许即可
组件拦截禁用应用的某个 Activity/Service/Receiver/Provider取消阻止即可

App Ops 控制的是权限粒度——"这个操作你能不能做"。组件拦截控制的是组件粒度——"这个组件还存不存在"。两者互补使用。