appops 中文文档 下载 App

Android 隐藏的 appops 权限机制是怎么回事

appops 是什么

Android 系统中有一个叫做 appops(Application Operations)的系统服务。它定义了一系列"应用操作"(application operation, op),这些操作描述了应用能够执行的具体行为。

其中部分操作与系统权限对应(比如 OP_CAMERA 对应"相机权限"),其余则对应单独的系统没有开放控制的功能(比如 OP_READ_CLIPBOARD 读取剪贴板,但并不存在一个"读取剪贴板权限"可以在系统设置里开关)。

appops 与系统权限的关系

原生 Android 使用 appops 来追踪权限使用,同时也部分用于权限控制。每个应用都有自己的 appops 设置,当应用尝试执行某个操作时:

  1. 系统先检查该应用是否被授予了对应的运行时权限
  2. 同时检查该操作对应的 appops 设置
  3. 如果没有授予运行时权限,应用收到错误
  4. 如果 appops 被设为忽略,应用不会收到错误,但只会收到空白数据——这是 App Ops 的核心价值

为什么原生 Android 不提供 appops 修改界面

从历史来看,Android 的 appops 服务早在 Android 4.3 就引入了"隐藏权限"功能,但谷歌从未在系统设置里开放用户可配置的界面。可能的原因包括:

正因如此,App Ops 这类第三方工具才有了存在的必要。

appops 的两种模式

每个 op 在系统中都有两种 mode:

uid mode 有更高优先级——只有当 uid mode 为默认值时,系统才会使用 package mode。这直接影响 App Ops 权限设置在不同 Android 版本上的生效行为,详见 Android 版本差异。

能修改哪些 appops

App Ops 能修改的 appops 范围完全取决于你的 Android 系统版本,通常系统版本越高能修改的越多。厂商自定义 ROM 可能会添加自己的 appops 项,也可能移除某些标准项。

App Ops 应用内可以在"设置 → 行为 → 全部权限"中查看当前系统支持的所有 appops 列表。

App Ops 权限列表
App Ops 展示的应用权限列表