Android微信抢红包服务源码
基于Android AccessibilityService,配套微信7.0.9版本,主要使用控件ID来获取AccessibilityNodeInfo,亲测好用!
RedPacketService.java 实现抢红包功能
package com.example.snatch;
import android.accessibilityservice.AccessibilityService;
import android.app.KeyguardManager;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.PowerManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.Toast;
import java.util.List;
/**
* 抢红包Service,继承AccessibilityService
*/
public class RedPacketService extends AccessibilityService {
/**
* 微信几个页面的包名+地址。用于判断在哪个页面
* LAUCHER-微信聊天界面
* LUCKEY_MONEY_RECEIVER-点击红包弹出的界面
* LUCKEY_MONEY_DETAIL-红包领取后的详情界面
*/
private String LAUCHER = "com.tencent.mm.ui.LauncherUI";
private String LUCKEY_MONEY_DETAIL = "com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI";
private String LUCKEY_MONEY_RECEIVER = "com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyNotHookReceiveUI";
private static final String TAG = "RedPacketService";
//聊天界面“微信红包” TextView ID
private String VIEW_ID_WXHB = "com.tencent.mm:id/aum";
//聊天界面"已领取" TextView ID
private String VIEW_ID_RECIEVED = "com.tencent.mm:id/aul";
//打开红包界面“开” Button ID
private String VIEW_ID_OPEN = "com.tencent.mm:id/dan";
//得到的红包金额
private String VIEW_ID_MONEY_AMOUNT = "com.tencent.mm:id/d62";
//会话列表界面“微信红包” TextView ID
private String VIEW_ID_CHET_LIST_WXHB = "com.tencent.mm:id/bal";
//点击红包打开的界面 红包内容描述 TextView ID
private String VIEW_ID_DESCRIPTION = "com.tencent.mm:id/dam";
/**
* 获取PowerManager.WakeLock对象
*/
private PowerManager.WakeLock wakeLock;
/**
* KeyguardManager.KeyguardLock对象
*/
private KeyguardManager.KeyguardLock keyguardLock;
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if ((null == event.getPackageName())||(null == event.getClassName())){
return;
}
String pkgName = event.getPackageName().toString();
//如果不是微信
if(!"com.tencent.mm".equals(pkgName)){
return;
}
int eventType = event.getEventType();
String className = event.getClassName().toString();
Log.i(TAG, "onAccessibilityEvent eventType=" + eventType + " className=" + className);
AccessibilityNodeInfo rootNode = getRootInActiveWindow();
switch (eventType) {
//通知栏来信息,判断是否含有微信红包字样,是的话跳转
case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
List<CharSequence> texts = event.getText();
for (CharSequence text : texts) {
String content = text.toString();
Log.i(TAG, "TYPE_NOTIFICATION_STATE_CHANGED content=" + content);
if (