Log
ColorOS 老是弹「检测到“XX”获取无障碍权限」是怎么回事?
ColorOS 16 起安全中心会反复弹「检测到 XX 获取无障碍权限」,这不是安卓原生的无障碍工具声明,而是安全中心新增的风险提醒——并且它会顺手把无障碍关掉。判定按包名与安装来源,由 OPPO 云端名单下发。附 root 核实方法。
关键词:ColorOS、安全中心、无障碍、无障碍风险提醒、OPPO、一加
现象
ColorOS(16 起)会在"安全中心"里隔一段时间弹一次,长这样:
检测到"某应用"获取无障碍权限
无障碍权限允许应用查看屏幕内容并自动操作设备,可能影响您的隐私和资金安全
[ 关闭无障碍 ] [ 保持开启 (倒计时) ]
很多人第一反应是"这不就是安卓那条无障碍通知吗",去关应用的无障碍工具声明。方向错了。
先排掉一个误解:这和原生的"无障碍工具声明"无关
原生 Android 只会在应用没有声明无障碍工具(android:isAccessibilityTool="true")时,隔段时间发一条:
查看权限设置(XX 可以查看和控制您的屏幕。点按即可查看。)
而 ColorOS 弹的这个,是安全中心自己新增的「无障碍风险提醒」:标题里直接点名应用、正文强调"隐私和资金安全",按钮里还带一个"关闭无障碍"。这两件事性质完全不同。
真正的触发链路
- 外部风险判定先发生,然后安全中心(
com.oplus.safecenter)的FraudRiskProvider被调用; - 安全中心弹出这个对话框,同时顺手把该应用的无障碍关掉(内部调用
AccessibilityUtils.setAccessibilityServiceState(..., false)); - 视情况还会请求系统清理该应用进程,并把这件事上报到自启动、securityguard、手机管家几个模块。
也就是说,它不只是"提醒",而是"提醒 + 直接关停"。用户看到的是一句话,实际发生的是一次管控动作。
为什么偏偏是某些 App 老被弹
因为判定是按包名做的。
OPPO 通过 com.oplus.romupdate 这个 provider 下发一份配置表 update_list,其中有一条 safe_accessibility_turn_off_whitelist(无障碍关闭白名单),结构大意是:
<accessibility_turn_off_switch>1</accessibility_turn_off_switch>
<!-- 按包名豁免 -->
<accessibility_turn_off_skip_package>某个包名</accessibility_turn_off_skip_package>
...
<!-- 按安装来源豁免 -->
<accessibility_turn_off_skip_install_source>某个渠道包名</accessibility_turn_off_skip_install_source>
...
规则就是:
- 包名在
skip_package里 → 跳过,不提示、不关; - 安装来源命中
skip_install_source(比如系统商店、系统备份/换机恢复这类渠道)→ 也跳过; - 两者都不在 → 被提示、并被关掉无障碍。
这就是那个经典现象的原因:同样功能的两个 App,一个风平浪静,一个天天被弹——差的是"包名有没有被收录",以及"是不是从被认可的来源装的"。
怎么自己核实(需要 root)
- 安全中心给哪些包弹过:
/data/data/com.oplus.safecenter/databases/com.oplus.safecenter_accessibility_drs_obus_sqlite里事件accessibility_guide_close_dialog_click的pkg_name字段。
- 当前生效的豁免名单:
com.oplus.romupdate的rom_update.db→update_list表 →filterName = 'safe_accessibility_turn_off_whitelist'。
小结
- ColorOS 的这条提示 = 安全中心的「无障碍风险提醒」,由云端名单按包名 / 安装来源判定,命中就是"提示 + 关无障碍"。
- 它和原生的无障碍工具声明不是一回事,别白折腾声明。
- 名单是云端下发、会随版本更新的,所以本地没有一个"设一下就永久不弹"的开关。
相关阅读:ColorOS 重启后无障碍服务失效?把它拆成三层讲清楚
本文基于某个版本的 ColorOS 真机数据与系统 APK 反编译分析,具体行为会随系统版本、云端名单更新而变化。