为了应对领导在群里时不时的一个红包,写一个抢红包的应用迫在眉睫了。之前由于没有自动抢红包错失了100RMB+的红包啊!
先来整理下思路。要实现抢红包,那么就要在红包来的时候去打开微信,执行点击的动作。被点击的控件肯定是带有红包关键字的。打开红包后,还需要去点击一下打开。
为了实现上面的一系列步骤,方法有两种。
从framwork进行修改。这种方式适合于自制rom。如手机厂商多采用这种方法。有个同事就通过这方法实现了红包功能。
就只能通过google 提供了一个辅助服务类了。该类可以监听通知、监听窗口变化,模拟点击等功能。该文就采用辅助服务类。
STEP1 辅助服务类的使用
通过配置manifest文件就可以使用辅助服务了。
该服务可以进行配置,配置如下:
配置好后,该服务就可以使用了。可以通过一个按钮引导用户去开启这个服务
因为这个服务在系统设置里,所以通过点击去打开系统设置。然后就可以开启次服务。
接下来就是重点了。
首先需要去继承一个AccessibilityService 。
需要去重写他的两个方法。onAccessibilityEvent方法用来接收服务监听的事件,此处为通知和窗口变化。
现在先来看看 通知来的时候如何处理:
在打开微信后,会发生窗口状态变化。这个时候该事件将会被监听。
而且聊天界面是整个Activity contentView的父VIEW。通过解析页面可以轻易的发现。
再新打开的页面上,通过辅助类提供的方法对节点进行遍历。
通过 AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); 获取跟节点,同时也可以通过getchirld 方法来看看他的子节点。
其余7个分别是搜索、更多、微信、通信录等。
这时候,我们可以继续利用对节点的遍历来实现点击的动作。代码如下:
至此,基本自动抢红包的功能都完成了。为了保证程序的健壮性,还需要对抢红包的失败的情况进行处理。
领取专属 10元无门槛券
私享最新 技术干货