一、前言
紅包應用越來越多,關於搶紅包插件/外掛,你想知道些實用知識嗎?
二、分析
在有以上的一些關於輔助服務的基礎知識後,我們就可以分析怎樣自動化搶紅包。 大家使用過微信都知道,如果不是在微信的可見界面範圍(在桌面或者在使用其它應用時),在收到新的消息,就會在通知欄提醒用戶。而在微信的消息列表界面,就不會彈出通知欄,所以可以區分這兩種情況。然後抓取相關關鍵字作進一步處理。
1、在非微信消息列表界面,收到通知消息的事件,判斷通知欄裡的文本是否有[微信紅包]的關鍵字,有則可以判斷為用戶收到紅包的消息(當然,你可以故意發一條包括這個關鍵字的文本消息去整蠱你的朋友)。然後,我們就自動化觸發這個消息的意圖事件(Intent);
2、在通知欄跳進微信界面後,是去到com.tencent.mm.ui.LauncherUI這個Activity界面。我們知道,紅包的消息上,包括了關鍵字領取紅包或者View的id,那我們就根據這個關鍵字找到相應的View,然後再觸發ACTION_CLICK(點擊事件);
3、在點擊紅包後,會跳到com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI這個拆紅包的Activity,當然老方法,找關鍵字拆紅包或id,然後觸發自動化點擊事件
三、實戰
1、新建一個繼承AccessibilityService的類,如QiangHongBaoService,然後在AndroidManifest.xml裡聲明組件,在meta-data裡聲明的是輔助配置,這個是Android4.0之後才支持的寫法,在4.0之前的系統要在代碼裡聲明。
2、在res/xml目錄下生成輔助服務的配置文件qianghongbao_service_config.xml
android:description 這個是設置服務的描述,在用戶授權的界面可以看到。
android:accessibilityEventTypes 這個是配置要監聽的輔助事件,我們只需要用到typeNotificationStateChanged(通知變化事件)、typeWindowStateChanged(界面變化事件)
android:packageNames 這個是要監聽應用的包名,如果要監聽多個應用,則用,去分隔,這裡我們只需要監聽微信的就可以了
android:accessibilityFeedbackType 這個是設置反饋方式
FeedbackType描述
feedbackSpoken 語音反饋
feedbackHaptic 觸感反饋
feedbackAudible 表示聲音(不是語音)反饋
feedbackVisual 視覺反饋
feedbackGeneric 通用反饋
feedbackAllMask 所有以上的反饋
3、在以上都配置好後,我們就可以在QiangHongBaoService這個服務裡進行編碼了,要做的就是將整個UI跳轉流程與邏輯串聯起來。
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
//接收事件,如觸發了通知欄變化、界面變化等
}
@Override
protected boolean onKeyEvent(KeyEvent event) {
//接收按鍵事件
return super.onKeyEvent(event);
}
@Override
public void onInterrupt() {
//服務中斷,如授權關閉或者將服務殺死
}
@Override
protected void onServiceConnected() {
super.onServiceConnected();
//連接服務後,一般是在授權成功後會接收到
}
閱讀更多 猿百科技術棧 的文章