史上最详细的微信抢红包详解

4,201 阅读2分钟

一.技术背景

辅助功能设计初衷在于帮助残障用户使用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

接下来就进入拆字页面了,按照上面的分析逻辑即可完成,不多讲了,大家自己实现