用过 Android 的开发者都知道,AccessibilityService 是个"神奇"的 API。
说它是无障碍服务吧,确实是------帮视障用户读屏、语音操控手机,这是它的本职工作。
但现实是,大量 App 拿它来干别的事:自动抢红包、自动点击广告、模拟用户操作、监控屏幕内容......甚至有恶意软件借它窃取密码。
Google 终于忍不了了。
Android 17 Beta 2 开始,开启高级保护模式后,非无障碍类应用将被直接禁止调用 AccessibilityService API。

AccessibilityService 到底能干什么
先说说为什么这个 API 这么"香"。
AccessibilityService 拥有 Android 系统中最强大的权限之一:
- 读取屏幕内容:能获取当前界面上所有控件的文本、状态
- 模拟用户操作:能执行点击、滑动、输入等手势
- 监听用户行为:能知道用户点了什么、打开了什么 App
- 全局悬浮窗:能在任何界面上叠加显示内容
简单说,拿到无障碍权限的 App,几乎可以"看到你看到的一切,做到你能做的一切"。
这本来是给视障、听障用户设计的辅助能力。但因为功能太强大,被大量"创意"用法占据了:
| 本来的用途 | 实际被用来干的事 |
|---|---|
| 屏幕朗读 | 自动抢红包 |
| 语音控制 | 自动化脚本 |
| 手势辅助 | 模拟点击跳过广告 |
| 视觉增强 | 监控其他 App 内容 |

Android 17 Beta 2 怎么限制的
Google 在 Android 17 Beta 2 中强化了高级保护模式(Advanced Protection Mode),核心变化:
1. 非无障碍类应用直接禁止获取权限
系统会检查应用是否声明为"无障碍工具"类别。如果不是,直接拦截,用户连手动授权的入口都没有。
2. 已授予的权限自动撤销
升级或开启保护模式后,之前已经拿到无障碍权限的非无障碍应用,权限会被自动收回。
3. 保护模式开启期间无法绕过
不像以前可以通过 adb 或开发者选项绕过,高级保护模式下这条路被彻底堵死。

less
// 以前:用户可以手动授权任何 App
Settings → Accessibility → MyApp → Enable ✓
// Android 17 保护模式下:
Settings → Accessibility → MyApp → [不可用/已隐藏]
哪些应用会受影响
影响面其实不小。很多"正经"App 也在用无障碍服务实现一些功能:
直接受影响的:
- 自动化工具(Tasker、Auto.js 等)
- 模拟 Dynamic Island 的 App(如 dynamicSpot)
- 密码管理器的自动填充(部分实现方式)
- 自动跳过广告的工具
- 手势增强类 App
不受影响的:
- TalkBack 等官方屏幕阅读器
- 正规声明的无障碍辅助工具
- Voice Access 等语音控制服务
已有用户反馈:在 Pixel 9a 上运行 Android 17 Beta 2 并开启保护模式后,dynamicSpot 无法获取所需的悬浮窗权限,功能完全失效。
为什么 Google 要这么做
一个字:安全。
无障碍服务的滥用已经成为 Android 安全的重大隐患:
恶意软件利用无障碍服务的典型攻击链:
markdown
1. 诱导用户开启无障碍权限
↓
2. 监控银行/支付 App 的界面内容
↓
3. 读取账号、密码、验证码
↓
4. 模拟点击完成转账操作
↓
5. 用户全程无感知
这不是假设------近年来大量 Android 银行木马(如 SharkBot、Xenomorph)都是通过无障碍服务实现的。Google Play Protect 拦截了大量此类应用,但总有漏网之鱼。
从根源上限制非无障碍应用的权限获取,是最直接有效的防御手段。
对开发者的影响
如果你的 App 正在使用 AccessibilityService,需要注意:
1. 评估是否真的需要
问自己:这个功能是否有其他 API 可以替代?
| 需求 | 替代方案 |
|---|---|
| 自动填充密码 | Autofill Framework |
| 悬浮窗显示 | SYSTEM_ALERT_WINDOW 权限 |
| 手势导航 | GestureDetector / 系统手势 API |
| 读取通知 | NotificationListenerService |
2. 如果确实是无障碍工具
确保在 AndroidManifest 中正确声明 accessibilityServiceConfig,并在应用商店中标注为无障碍工具类别。符合标准的应用不会受到影响。
3. 关注后续政策变化
目前限制仅在"高级保护模式"下生效。但 Google 的惯例是:先在可选模式中试水,后续版本逐步扩大为默认行为。不排除未来所有 Android 设备默认启用这一限制。
写在最后
无障碍服务被滥用这件事,Android 生态已经忍了很多年。
Google 这次选择从"高级保护模式"切入,既保护了安全敏感的用户,又给开发者留了缓冲期。但信号已经很明确:
AccessibilityService 回归本职只是时间问题。
如果你的 App 还在依赖无障碍服务实现非无障碍功能,现在就该开始寻找替代方案了。别等到正式版发布,措手不及。