appops 中文文档 下载 App

App Ops 四种权限状态分别代表什么

四种状态速查表

状态底层 mode应用看到什么典型场景
允许allow正常获取真实数据确实需要该权限的应用
拒绝force-stop收到明确错误不再让应用拥有这个能力
忽略ignore应用以为权限在,但拿到空数据专治不给权限就不运行
仅在使用期间允许foreground前台时正常,后台被限制不让应用在后台偷偷用权限
权限设置界面
单个权限项的四种状态切换

详细解读

允许(Allow)

应用可以正常获取权限对应的真实数据。这相当于 App Ops 不干预这个权限,让系统默认行为生效。

使用场景:你信任这个应用,或者它确实需要这个权限才能正常工作。例如地图应用需要位置权限才能导航。

忽略(Ignore)

App Ops 的杀手锏功能。底层把 appops 设为 ignore,系统在应用尝试获取数据时返回空白(空列表、空字符串、空对象等),但不会报错。应用认为权限是"允许"状态,但拿到的数据是假的。

使用场景:不想给应用数据但又不想它因为权限被拒而退出。最典型的就是那些"不给定位就不让用"的流氓应用——设为忽略后它能照常运行,只是拿不到你的位置。

拒绝(Force Stop)

在系统层面明确拒绝权限请求。应用在检查权限时收到明确的"拒绝"返回值。绝大多数应用检测到拒绝后会停止运行或反复弹窗。

使用场景:你完全不想让应用拥有这个能力。例如永远不允许某应用使用相机。但要注意拒绝可能导致应用无法运行,这时候应该改用"忽略"。

仅在使用期间允许(Foreground)

Android 10 引入的模式。应用在前台运行时可以正常获取数据,但切到后台后系统会强制终止该权限相关的行为。底层把 appops 设为 foreground。

使用场景:允许应用在你主动使用它的时候用权限,但不允许它在后台偷偷用。适合相机、麦克风、位置等敏感权限——应用在你眼前的时候没问题,切出去就不让它用了。

每种状态的技术边界

推荐的默认策略

对于每个应用的每个权限,一个务实的默认策略是:

  1. 确实需要才能正常运行 → 允许
  2. 不想给但不给也不退出 → 忽略
  3. 不想给且即使退出也无所谓 → 拒绝
  4. 想让它能用但不能后台偷用 → 仅在使用期间允许