最新版微信qq抢红包辅助解析

微信升级6.3之后,很多人发现自己的抢红包神器失效了在打开红包界面不会自动拆开红包。原因请看下图:
拆红包界面
和旧版本相比这个按钮的text为空,所以以前根据“拆红包“字符串匹配AccessibilityNodeInfo在方法在这里并不适用。我们仔细查看怎么获取到这个按钮的nodeinfo,根据id获取不可取,因为控件id每次都会改变。然后仔细看这个button clickable=true,focusable = true。因此我们可以根据这个特性进行遍历、满足条件的就是这个button:

 public void recycleW(AccessibilityNodeInfo info) {
        if (info.getChildCount() == 0) {
            if (info.isClickable() && info.isFocusable()) {
                info.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                return;
            }
        } else {
            for (int i = 0; i < info.getChildCount(); i++) {
                if (info.getChild(i) != null) {
                    recycleW(info.getChild(i));
                }
            }
        }
    }

这个方法可以获取到并模拟点击。
其他的和旧版本辅助流程差不多
1:获取通知栏信息,
2:检测是否包含[微信红包],[QQ红包字符串]
3:有的话就进入聊天界面
4:view改变的时候会得到AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED事件,然后在聊天界面使用findAccessibilityNodeInfosByText(“查看红包”)获取到这个textview,然后getparent获取到可点击的view,模拟点击得到拆红包界面。

 private void getWXPacket() {
                AccessibilityNodeInfo rootNode = getRootInActiveWindow();
        List<AccessibilityNodeInfo> nodeInfos = rootNode.findAccessibilityNodeInfosByText("查看红包");
        if (!nodeInfos.isEmpty()) {
            AccessibilityNodeInfo accessibilityNodeInfo = nodeInfos.get(nodeInfos.size() - 1);
            while (!accessibilityNodeInfo.isClickable()) {
                accessibilityNodeInfo = accessibilityNodeInfo.getParent();
            }
            accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
        }
    }

这样抢红包功能就差不多了,不过我们可以优化一下,让他在黑屏锁屏的时候在能够自动抢红包。我们只需要在得到通知栏消息的时候解锁并强制点亮屏幕就可以了
AccessibilityService这个类就不详细诉说了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值