Android 15上无障碍权限功能失效问题求助
兄弟,我太懂你这种跨Android版本踩兼容坑的憋屈了!Android 15对无障碍服务的权限管控、事件触发逻辑都做了不少调整,结合你用Expo + React Native TS + 自定义原生代码的场景,我给你梳理几个排查方向,你可以挨个试试:
先检查无障碍服务的Manifest配置是否符合Android15要求
Android15对AccessibilityService的声明属性要求更严格了,你打开AndroidManifest.xml里的服务声明,确认这几个关键点:android:accessibilityEventTypes是否覆盖了你需要的所有事件类型(测试阶段可以先用typeAllMask,正式环境建议精准声明)- 必须显式设置
android:canRetrieveWindowContent="true",Android15不再默认赋予这个核心权限 - 如果涉及网页内容读取,还要额外加上
android:canRequestEnhancedWebAccessibility="true"
另外,千万不能漏加android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE",这是无障碍服务能正常绑定的基础
确认编译和目标SDK版本是否适配Android15
打开项目里的android/build.gradle(模块级别的那个),检查这两个配置:compileSdkVersion和targetSdkVersion是否都设为35(对应Android15),如果还停留在34(Android14),Android15会触发兼容性限制,很多权限和事件会被系统拦截- 同时确认你的Expo SDK版本是否支持Android15,建议升级到最新稳定版,旧版本大概率没做适配
抓Logcat日志定位具体报错
连接你的Android15设备,在终端运行adb logcat *:S AccessibilityService:D 你的应用包名:D(把“你的应用包名”换成实际包名),然后操作触发无障碍事件,重点看日志里有没有:- 权限拒绝类错误(比如
Permission denied: AccessibilityService cannot read content from package XXX) - 事件交付失败提示(比如
Accessibility event not sent due to policy restriction)
这些日志能直接帮你锁定是权限问题、系统政策限制还是事件逻辑问题
- 权限拒绝类错误(比如
检查自定义无障碍服务的代码逻辑
你的原生服务类是不是正确继承了AccessibilityService,并重写了onAccessibilityEvent和onInterrupt?Android15对事件回调有不少微调:- 某些事件类型(比如
TYPE_VIEW_CLICKED)的触发条件更严格,需要确保目标View的clickable属性为true才会触发 - 调用
getRootInActiveWindow()时,Android15可能在某些场景下返回null,建议加非空判断,同时检查服务是否正确处理了窗口切换事件
- 某些事件类型(比如
验证权限授予的完整性
虽然你是从Google Play安装的包,但还是要手动确认:- 系统设置的“无障碍”页面里,你的应用服务是否确实处于开启状态(有时候权限跳转逻辑可能在Android15下失效,导致用户没真正授予权限)
- 检查权限跳转的Intent是否正常工作,原来的
Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)在Android15下是否还能正确跳转到设置页面,如果不行,试试显式指定系统设置的包名
排查特定应用的事件拦截
你提到“只读取到部分事件”,会不会是目标应用在Android15下开启了隐私保护功能?比如部分银行、社交类应用会主动限制无障碍服务读取自身内容,你可以换几个普通应用(比如系统自带的记事本)测试,看是不是只有特定应用的事件读不到
先从抓Logcat日志开始吧,日志是定位这类问题最快的方式!如果有具体的日志片段或者Manifest/服务代码,贴出来我再帮你细抠细节~




