CnOps 社区
首页开源项目实践文章视频课程常见问答开发者工具
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具

CnOps 社区

愿景

CnOps 社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页问答如何检测通过AccessibilityService产生的非人操作?

如何检测通过AccessibilityService产生的非人操作?

#AccessibilityService#检测方法#无障碍服务#事件标志位#Android

CNOps | 2026-03-19

检测AccessibilityService产生的非人操作可以从两个维度入手:

环境状态检测:

  • 检测是否存在正在运行的无障碍服务:通过AccessibilityManager.isEnabled()判断
  • 读取无障碍服务ID:获取已启用服务列表,识别非系统服务的包名
  • 检测是否具备全控能力:判断服务是否同时拥有CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT(读取屏幕)和CAPABILITY_CAN_PERFORM_GESTURES(操作应用)两项能力

事件特征检测:

  • 检查MotionEvent的flags标志位,Android 12及以上版本可通过FLAG_IS_ACCESSIBILITY_EVENT(0x800)标志位判断事件是否由无障碍服务产生

需要注意的是,特殊人群(如视障用户)也在正常使用无障碍服务,简单通过特征值分析可能造成误判。建议结合多维度信息综合判断,而非仅依赖单一检测结果。