关闭

当前位置:首页 > 微信抢红包 » 正文

「微信抢红包助手」微信抢红包源码 Android开发中文站

关键代码

package com.example.hook; import java.util.List; import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityServiceInfo; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Build; import android.util.Log; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; @SuppressLint("NewApi") public class HookService extends AccessibilityService { private   final String TAG = "HookService"; /** * 当通知栏改变或界面改变时会触发该方法 */ @Override public void onAccessibilityEvent(AccessibilityEvent event) { if (event == null) return; if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { List<CharSequence> texts = event.getText(); if (!texts.isEmpty()) { for (CharSequence t : texts) { String text = String.valueOf(t); if (text.contains("[微信红包]")) {//获取通知栏字符,若包含  [微信红包] 则模拟手指点击事件 handleNotificationChange(event); break; } } } } /** * 下面内容可以借助 Dump View Hierarchy For UI Automator 去分析微信UI结构 */ if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { System.out.println("TYPE_WINDOW_STATE_CHANGED --> "+event.getClassName()); if ("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI".equals(event.getClassName())) { // 点中了红包,下一步就是去拆红包 checkKey1(); } else if ("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI".equals(event.getClassName())) { // 拆完红包后看详细的纪录界面 // nonething } else if ("com.tencent.mm.ui.LauncherUI".equals(event.getClassName())) { // 在聊天界面,去点中红包 checkKey2(); } } } private void checkKey1() { AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo == null) { Log.w(TAG, "rootWindow为空"); return; } List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("拆红包");  //获取包含  拆红包  文字的控件,模拟点击事件,拆开红包 for (AccessibilityNodeInfo n : list) { n.performAction(AccessibilityNodeInfo.ACTION_CLICK); } } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) private void checkKey2() { AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); if (nodeInfo == null) { Log.w(TAG, "rootWindow为空"); return; } List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("领取红包"); //找到聊天界面中包含  领取红包  字符的控件 if (list.isEmpty()) { list = nodeInfo.findAccessibilityNodeInfosByText("[微信红包]"); for (AccessibilityNodeInfo n : list) { Log.i(TAG, "-->微信红包:" + n); n.performAction(AccessibilityNodeInfo.ACTION_CLICK); break; } } else { // 最新的红包领起 for (int i = list.size() - 1; i >= 0; i--) { AccessibilityNodeInfo parent = list.get(i).getParent(); Log.i(TAG, "-->领取红包:" + parent); if (parent != null) { parent.performAction(AccessibilityNodeInfo.ACTION_CLICK); try {  //根据  Dump View Hierarchy For UI Automator 可以知道得到的控件的.getParent().getParent().getParent().getParent() //才是要点击的根布局, 调用performAction(AccessibilityNodeInfo.ACTION_CLICK)触发点击事件 parent.getParent().getParent().getParent().performAction(AccessibilityNodeInfo.ACTION_CLICK); System.out.println("click------"); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } break; } } } } public void handleNotificationChange(AccessibilityEvent event) { if (event == null) return; if (event.getEventType() != AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { return; } if (event.getParcelableData() instanceof Notification) { Notification notification = (Notification) event.getParcelableData(); if (!(event.getParcelableData() instanceof Notification)) { return; } notification = (Notification) event.getParcelableData(); PendingIntent pendingIntent = notification.contentIntent; try { pendingIntent.send();   //点击通知栏消息 System.out.println("send...."); } catch (PendingIntent.CanceledException e) { e.printStackTrace(); } } } @Override public void onInterrupt() { // TODO Auto-generated method stub } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub return super.onStartCommand(intent, START_STICKY, startId); } }

工程下载链接   

上一篇:「投资领红包」新四大年俗出炉:集五福、抢红包、全家游入选
下一篇:「新平台扫雷红包」索赔5000万 腾讯诉“微信自动抢红包”软件不正
说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!

猜你喜欢


二维码