Android 17 要下狠手了:无障碍服务 API 将被严格限制

0 阅读4分钟

用过 Android 的开发者都知道,AccessibilityService 是个"神奇"的 API。

说它是无障碍服务吧,确实是——帮视障用户读屏、语音操控手机,这是它的本职工作。

但现实是,大量 App 拿它来干别的事:自动抢红包、自动点击广告、模拟用户操作、监控屏幕内容……甚至有恶意软件借它窃取密码。

Google 终于忍不了了。

Android 17 Beta 2 开始,开启高级保护模式后,非无障碍类应用将被直接禁止调用 AccessibilityService API。

cover.png

AccessibilityService 到底能干什么

先说说为什么这个 API 这么"香"。

AccessibilityService 拥有 Android 系统中最强大的权限之一:

  • 读取屏幕内容:能获取当前界面上所有控件的文本、状态
  • 模拟用户操作:能执行点击、滑动、输入等手势
  • 监听用户行为:能知道用户点了什么、打开了什么 App
  • 全局悬浮窗:能在任何界面上叠加显示内容

简单说,拿到无障碍权限的 App,几乎可以"看到你看到的一切,做到你能做的一切"。

这本来是给视障、听障用户设计的辅助能力。但因为功能太强大,被大量"创意"用法占据了:

本来的用途实际被用来干的事
屏幕朗读自动抢红包
语音控制自动化脚本
手势辅助模拟点击跳过广告
视觉增强监控其他 App 内容

abuse.png

Android 17 Beta 2 怎么限制的

Google 在 Android 17 Beta 2 中强化了高级保护模式(Advanced Protection Mode),核心变化:

1. 非无障碍类应用直接禁止获取权限

系统会检查应用是否声明为"无障碍工具"类别。如果不是,直接拦截,用户连手动授权的入口都没有。

2. 已授予的权限自动撤销

升级或开启保护模式后,之前已经拿到无障碍权限的非无障碍应用,权限会被自动收回。

3. 保护模式开启期间无法绕过

不像以前可以通过 adb 或开发者选项绕过,高级保护模式下这条路被彻底堵死。

restriction.png

// 以前:用户可以手动授权任何 App
SettingsAccessibilityMyAppEnable// Android 17 保护模式下:
SettingsAccessibilityMyApp[不可用/已隐藏]

哪些应用会受影响

影响面其实不小。很多"正经"App 也在用无障碍服务实现一些功能:

直接受影响的:

  • 自动化工具(Tasker、Auto.js 等)
  • 模拟 Dynamic Island 的 App(如 dynamicSpot)
  • 密码管理器的自动填充(部分实现方式)
  • 自动跳过广告的工具
  • 手势增强类 App

不受影响的:

  • TalkBack 等官方屏幕阅读器
  • 正规声明的无障碍辅助工具
  • Voice Access 等语音控制服务

已有用户反馈:在 Pixel 9a 上运行 Android 17 Beta 2 并开启保护模式后,dynamicSpot 无法获取所需的悬浮窗权限,功能完全失效。

为什么 Google 要这么做

一个字:安全

无障碍服务的滥用已经成为 Android 安全的重大隐患:

恶意软件利用无障碍服务的典型攻击链:

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 还在依赖无障碍服务实现非无障碍功能,现在就该开始寻找替代方案了。别等到正式版发布,措手不及。