Android中微信抢红包插件原理解析及开发思路

2019-12-10 19:08:02刘景俊

这里有很多事件,这些事件我们通过名字就可以看出来有很多我们可能都知道,比如当窗口发生变化的时候,当某个View被点击了,被滚动了等消息都是可以知道的。那么我们有了这些事件我们就可以做我们的事情了,因为我们知道事件触发了。

第四步、查找到我们想要处理的节点View

这里系统提供了两个方法让我们来进行查找想要的节点View

第一种是通过节点View的Text内容来查找

findAccessibilityNodeInfosByText("查找内容")

这种方式查找,就是像TextView,Button等View有文本内容的,可以使用这种方式快速的找到。

第二种是通过节点View在xml布局中的id名称

findAccessibilityNodeInfosByViewId("@id/xxx")

这个一般很难知道,但是我们在查找系统控件的时候还是可以做的,因为系统的控件的id是可以知道的,而且是统一的。
(关于这两个方法我们在写网页爬虫程序的时候可能知道,在html中通过tag/name/id等信息可以找到一个节点,原理都类似)

第五步、模拟点击指定事件

我们找到我们想要的View节点,调用方法模拟事件:

performAction(AccessibilityNodeInfo.ACTION_CLICK)

调用这个方法即可,当然这里的参数就是指定事件的名称,这个和AccessibilityEvent中监听的那些事件是一一对应的,这里是模拟点击事件,我们当然可以模拟View的滚动事件,长按事件等。

三、实战案例:微信抢红包插件

上面我们就介绍了一个辅助功能开发的具体步骤,那么下面就通过一个简单的例子,来实战一下

例子:微信自动抢红包插件

首先我们来看一下微信抢红包的流程:

第一步、我们在通知栏会接收到一个微信红包的消息

我们监听通知栏事件:

AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED

然后查看通知栏的消息中是否有:[微信红包] 的文本内容

是的话,就走进入第二步