Android红包精灵开源项目源码

发布时间: 2017-05-18

赞助点10.00

升级会员组 享受更多优惠

举报/报错
自动发货

自动抢红包精灵是一款让你不再错过任何一个红包的手机软件,软件实时的为你提供最好的服务,给你最好的服务,操作简单只要轻轻一点就能轻松抢到红包,喜欢的用户快来下载吧! 自动抢红包精灵软件特色: 1.QQ和微信红包自动抢 2.操作简单,只需简单操作就可自动抢红包 3.反应迅速,红包统统拿来,一个都跑不掉 [b]关键Service代码:[/b][p=24, null, left] 注:此前在15年12月时,用的Eclipse开发这个,后来没有时间切到AS上去,如运行在AS可以的话,可提pr 实现原理 1.1 状态说明 private static final String WECHAT_OPEN_CH = "拆红包"; private static final String WECHAT_VIEW_SELF_CH = "查看红包"; private static final String WECHAT_VIEW_OTHERS_CH = "领取红包"; private static final String WECHAT_NOTIFICATION_TIP = "[微信红包]"; 1.2 根据阶段选择不同的入口 在每次窗体状态发生变化后,根据当前所在的阶段选择入口。 /* 如果戳开但还未领取 */ if (mNeedUnpack && (mUnpackNodeList != null)) { Log.d(TAG, "事件----> start performAction 戳开但还未领取"); int size = mUnpackNodeList.size(); if (size > 0) { AccessibilityNodeInfo cellNode = mUnpackNodeList.get(size - 1); cellNode.performAction(AccessibilityNodeInfo.ACTION_CLICK); mNeedUnpack = false; } Log.d(TAG, "事件----> end performAction 戳开但还未领取"); } 屏幕内容检测和自动化点击的实现 /** 打开通知栏消息*/ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void openNotify(AccessibilityEvent event) { if(event.getParcelableData() == null || !(event.getParcelableData() instanceof Notification)) { return; } //将微信的通知栏消息打开 Notification notification = (Notification) event.getParcelableData(); PendingIntent pendingIntent = notification.contentIntent; Log.d(TAG, "事件----> 打开通知栏消息 " + event); try { pendingIntent.send(); } catch (PendingIntent.CanceledException e) { e.printStackTrace(); } } 和其他插件一样,这里使用的是Android API提供的AccessibilityService。这个类位于android.accessibilityservice包内,开启服务后就会自动做一些操作 像现在360的自动安装apk,也是开启了此服务。 AccessibilityService 服务在后台运行,等待系统在发生 AccessibilityEvent 事件时回调。这些事件指的是用户界面上发生的状态变化, 比如焦点变更、按钮按下等等。服务可以请求“查询当前窗口中内容”的能力。 开发辅助服务需要继承该类并实现其抽象方法。 2.1 配置AccessibilityService 在这个例子中,我们需要监听的事件是当红包来或者滑动屏幕时引起的屏幕内容变化,和点开红包时窗体状态的变化,因此我们只需要在配置XML的accessibility-service标签中加入一条 android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged" 或在onAccessibilityEvent回调函数中对事件进行一次类型判断 final int eventType = event.getEventType(); if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED || eventType == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) { // ... } 除此之外,由于我们只监听微信,还需要指定微信的包名 android:packageNames="com.tencent.mm" 为了获取窗口内容,我们还需要指定 android:canRetrieveWindowContent="true" 其他配置请看代码。 2.2 获取红包所在的节点 首先,我们要获取当前屏幕的根节点,下面两种方式效果是相同的: /* 聊天会话窗口,遍历节点匹配“领取红包”和"查看红包" */ List nodes1 = this.findAccessibilityNodeInfosByTexts( this.rootNodeInfo, new String[]{ WECHAT_VIEW_OTHERS_CH, WECHAT_VIEW_SELF_CH }); if (!nodes1.isEmpty()) { String nodeId = Integer.toHexString(System.identityHashCode(this.rootNodeInfo)); if (!nodeId.equals(lastFetchedHongbaoId)) { mLuckyMoneyReceived = true; mReceiveNodeList = nodes1; } return; } 2.3 红包标识符 /** * 将节点对象的id和红包上的内容合并 * 用于表示一个唯一的红包 * * @param node 任意对象 * @return 红包标识字符串 */ private String getHongbaoText(AccessibilityNodeInfo node) { /* 获取红包上的文本 */ String content; try { AccessibilityNodeInfo i = node.getParent().getChild(0); content = i.getText().toString(); } catch (NullPointerException npe) { return null; } Log.d(TAG, "事件----> start getHongbaoText() " + content); return content; }

 

版权信息:本站所有资源仅供学习与参考,请勿用于商业用途,如有侵犯您的版权,请及时联系客服,我们将尽快处理。

分享链接 分享海报

下载地址
本地下载
- MB
嘿,我来帮您!