利用Android无障碍服务(AccessibilityService)能做什么
可以开发各种各样的自动化脚本程序以及协助脚本,比如:
- 微信自动抢红包
- 微信自动接听电话
- 支付宝蚂蚁森林自动浇水
- 支付宝芭芭农场自动施肥、自动收集能量...
- 各种平台的拓客、引流、营销系统
- 远程控制
基于Android无障碍服务(AccessibilityService)封装的框架
- 简化自动化脚本开发
- 为自动化脚本提供各种增强能力
- 提高脚本易维护性
- 易于使用的无障碍服务API
- 浮窗管理器:易于实现及管理浮窗
- 步骤器:为快速实现、可复用、易维护的自动化步骤提供框架及管理
- 配套屏幕管理:快速生成输出屏幕截图、元素截图
- 屏幕管理结合opencv:便于屏幕内容识别为自动化提供服务
基础示例 | 进阶示例 | 高级示例 |
---|---|---|
![]() |
![]() |
![]() |
自动收能量 | 自动发朋友圈 | 自动滑动朋友圈 | 无障碍服务开启引导 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
防止下拉通知栏 | 通知/Toast监听 | 自动接听微信电话 | 窗口缩放&拖动 |
![]() |
![]() |
![]() |
![]() |

allprojects {
repositories {
//添加jitpack仓库
maven { url 'https://jitpack.io' }
}
}
dependencies {
//按需添加
//基础库(必须)
implementation "com.github.ven-coder.Assists:assists-base:最新版本"
//屏幕录制相关(可选)
implementation "com.github.ven-coder.Assists:assists-mp:最新版本"
//opencv相关(可选)
implementation "com.github.ven-coder.Assists:assists-opcv:最新版本"
}
一定要在主模块中注册服务,不然进程被杀服务也会自动被关闭需要再次开启(小米可保持杀进程保持开启,其他vivo、oppo、鸿蒙机型似乎不行)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.ven.assists.simple">
<application
android:name="com.ven.assists.simple.App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<!-- 添加代码 ↓-->
<service
android:name="com.ven.assists.service.AssistsService"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<!--android:priority="10000" 可提高服务在设置中的权重,排在前面-->
<intent-filter android:priority="10000">
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/assists_service" />
</service>
<!-- 或者使用下面的服务可以解决一些应用混淆节点的问题,比如微信8.0.51以上版本获取的节点元素错乱问题 -->
<!-- ⚠️ 选其一 -->
<service
android:name="com.google.android.accessibility.selecttospeak.SelectToSpeakService"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<!--android:priority="10000" 可提高服务在设置中的权重,排在前面 -->
<intent-filter android:priority="10000">
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/assists_service" />
</service>
<!-- 添加代码 ↑-->
</application>
</manifest>
调用AssistsCore.openAccessibilitySetting()
跳转到无障碍服务设置页面,找到对应的应用开启服务。
服务开启后执行以下API测试是否成功集成:
AssistsCore.getAllNodes().forEach { it.logNode() }
这段代码是获取当前页面所有节点元素的基本信息在Logcat(tag:assists_log)打印出来,如下图:

至此,已成功集成Assists。如果没有任何输出请检查集成步骤是否正确。
步骤器可以帮助快速实现复杂的业务场景,比如自动发朋友圈、获取微信所有好友昵称、自动删除好友...等等都是一些逻辑较多的业务场景,步骤器可帮助快速实现。
直接在接口onImpl(collector: StepCollector)
写步骤逻辑,每个步骤自定义步骤的序号,用于区分执行的步骤。如果重复则会以最后一个步骤为准
class MyStepImpl:StepImpl() {
override fun onImpl(collector: StepCollector) {
//定义步骤序号为1的逻辑
collector.next(1) {// 1为步骤的序号
//步骤1逻辑
...
//返回下一步需要执行的序号,通过Step.get([序号]),如果需要重复该步骤可返回Step.repeat,如果返回Step.none则不执行任何步骤,相当于停止
return@next Step.get(2) //将会执行步骤2逻辑
}.next(2) {
//步骤2逻辑
...
//返回下一步需要执行的序号,通过Step.get([序号])
return@next Step.get(3)
}.next(3) {
//步骤3逻辑
...
//返回下一步需要执行的序号,通过Step.get([序号])
return@next Step.get(4)
}
其他步骤
...
}
}
执行前请确保无障碍服务已开启
//从MyStepImpl步骤1开始执行,isBegin是否作为起始步骤,默认false
StepManager.execute(MyStepImpl::class.java, 1, isBegin = true)
// 设置停止标志,将取消所有正在执行的步骤
StepManager.isStop = true
更新时间:2025-03-25
- assists-mp去掉对于opencv减少不必要的包体积
- 兼容微信8.0.51以上版本获取的节点元素被混淆问题
交流群 | 个人微信 |
---|---|
![]() |
![]() |
1群已满200人,要进1群可加我拉进1群 |
❤️ 已入驻爱发电,感谢支持
付费社群提供的服务:
- 完整易于阅读的开发文档
- Assists开发指导
- 开发疑难解答
- 群友互助资源对接
- 基于Assists开发的抖音养号,小红书养号,支付宝能量收集,支付宝农场,无线远程控制等源码(补充中...)

