一.技术背景
辅助功能设计初衷在于帮助残障用户使用android设备和应用,在后台运行,可以监听用户界面的一些状态转换,例如页面切换、焦点改变、通知、Toast等,并在触发AccessibilityEvents时由系统接收回调。后来被开发者另辟蹊径,用于一些插件开发,比如微信红包助手,还有一些需要监听第三方应用的插件。
二.原理及实现
原理
大致简述一下,谷歌已经在View、ViewGroup、TextView等控件的文字改变、滑动、UI变化埋下了接口,当这些状态变化时控件会回调系统API,API系统然后对这些对象的数据进行组装,为了数据的安全性,系统会重新创建一些对象(AccessibilityEvent、AccessibilityNodeInfo)来间接保存这些数据,然后通过跨进程将这些数据返回给对应的Service中。
具体实现
第一步:实现AccessibilityService
新建service并继承AccessibilityService,实现父类的两个方法onInterrupt(),//中断访问回调onAccessibilityEvent() //状态变化回调
第二步:配置AccessibilityService
第三步:让用户打开辅助功能权限
三. 带你分析如何监听微信红包
三个方面
如何监听消息通知栏
判断通知栏是否有红包
如何点击聊天列表红包
所需分享工具
1.uiautomatorviewer.bat帮助我们获取屏幕中的控件,并使用脚本操作 这个地址我本地的是C:\Users\Administrator\AppData\Local\Android\Sdk\tools\bin\uiautomatorviewer.bat 大家根据自己的sdk位置查找
2.adb adb shell dumpsys window |findstr mCurrent 帮助会的当前微信页面的类名
下面的方法可以查找某个id节点
接下来就可以偷摸干事情了
1.查找包含微信红包字样的节点,利用uiautomatorviewer找到id
2.自动点击该节点,进入聊天页
如何查找聊天页红包
获得聊天页红包框id
接下来就进入拆字页面了,按照上面的分析逻辑即可完成,不多讲了,大家自己实现