Android QQ微信抢红包apk的实现

临近元旦,即将有一大波红包向我们袭来,有个轻松抢红包的工具岂不是更好,那就写个抢红包的应用吧,至于原理,网上有一大堆分享,我就不再详述了,只是大致将流程整理下,以作笔记.

一.界面

这里写图片描述

二 .功能实现原理

主要是用到了Accessibility,它是Android从API 4开始提供的一个功能,主要目的是帮助一些因为有视觉,听觉,身体障碍而无法完全使用触摸屏或铃声等的用户来使用Android的,但现在很多开发者都用它来实现一些其他功能,比如说微信抢红包,自动安装APK,强制停止应用等.实际上就是通过监视一个应用的界面元素状态的变化,来自动响应执行一些操作.
附API:http://www.android-doc.com/guide/topics/ui/accessibility/index.html

三. 主要功能实现

1.微信,QQ自动抢红包
2.微信,QQ聊天界面自动抢红包
3.随机回复感谢语
4.红包个数金额统计

四.功能实现流程

(1)在非微信消息列表界面,收到通知消息的事件,判断通知栏里的文本是否有[微信红包]的关键字——(2)进入微信,判断是否有[领取红包]的关键字—–(3)点击红包—–(4)点击领取按钮—–(5)收集红包数据—–(6)点击关闭红包详情按钮—–(7)自动回复随机感谢语

如果是在聊天界面,则从第(2)步开始,QQ领取红包大致相同,仅少了第四步.

五.部分代码分享

/**
 * 响应并处理AccessibilityEvent
 */
switch (eventType) {
            case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
                try {
                    Thread.sleep(1000); // 停1秒
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                eventText = "TYPE_NOTIFICATION_STATE_CHANGED";
                List<CharSequence> texts = event.getText();
                if (!texts.isEmpty()) {
                    for (CharSequence charSequence : texts) {
                        String text = String.valueOf(charSequence);
                        if (text.contains(WX_HONGBAO_TEXT_KEY)||text.contains(QQ_HONGBAO_TEXT_KEY)) {
                            openNotify(event);
                            break;
                        }
                    }
                }
                break;

            case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
                eventText = "TYPE_WINDOW_STATE_CHANGED";
                // 从微信主界面进入聊天界面
                openWeChatPage(event);
                break;

            case AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE:
                eventText = "CONTENT_CHANGE_TYPE_SUBTREE";
                // 从微信主界面进入聊天界面
                openWeChatPage(event);
                break;

            case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
                //聊天界面新消息
                eventText = "TYPE_WINDOW_CONTENT_CHANGED";
                if(StaticData.WXNserviceStatus&&StaticData.WXserviceStatus) {
                    wxHongBaoservice.getRedPackets(QiangHongBaoService.this);
                }

                if(StaticData.QQNserviceStatus&&StaticData.QQserviceStatus) {
                    qqHongBaoservice.getRedPackets(QiangHongBaoService.this);
                }
                break;

        }
    /**
     * 聊天界面判断红包处理的逻辑
     */
    private void openWeChatPage(AccessibilityEvent event) {
        CharSequence className = event.getClassName();
        Log.d(TAG, "openWeChatPage--className---" + className);
        new CheckScreenOn().checkScreen(getApplicationContext());

        if (wxSupportUi.getHbClick().equals(className)) {
            isWXNotify = true;
            wxHongBaoservice.clickOpenButton(QiangHongBaoService.this);
        } else if (wxSupportUi.getChartUi().equals(className) || wxSupportUi.getChartUi1().equals(className)) {
            wxHongBaoservice.getRedPackets(QiangHongBaoService.this);
        } else if (wxSupportUi.getMoneyDetails().equals(className)&&isWXNotify) {
            isWXNotify = false;
            wxHongBaoservice.getWXHBInfo(QiangHongBaoService.this,player,moneys,wxSupportUi);
        } else if (qqSupportUi.getChartUi().equals(className)) {
            isQQNotify = true;
            qqHongBaoservice.getRedPackets(QiangHongBaoService.this);
        }else if(qqSupportUi.getSendUi().equals(className)&&isQQNotify){
            //发红包界面判断
            isQQNotify = false;
        } else if(qqSupportUi.getMoneyDetails().equals(className)&&isQQNotify){
            isQQNotify = false;
            qqHongBaoservice.getQQHBInfo(QiangHongBaoService.this,player,moneys);
        }

    }

end

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值