本文為浪里個男【個人微信:love2094520】原創文章。
原創不易,轉載請務必注明!
【文章末尾我教大伙一鍵屏蔽微信紅包插件?。?!】
過年期間搶紅包,幾乎成了一項“全民運動”。但手動搶紅包的速度畢竟有限,不可能搶到所有的紅包。
為此,網上各種“搶紅包神器”如泉涌一般遍地發布,各種【官方】不官方插件孕育而生,手機系統也不落伍,360,樂視,小米,魅族.......
盡然還天真到把搶紅包速度測試歸結成手機一大重大的賣點,各種對比評測.........【Ps:那些手機制造商銷售商們,手機搶紅包速度和你系統屁大關系啊!不是手機當時網絡環境,運營商狀態,微信版本,微信服務器什么才扯上關系嗎?】
這些軟件都自稱能自動監控微信。一旦發現有新的紅包,軟件會自動在第一時間去搶。整個過程無需人工控制,用戶在睡覺的時候都會有紅包進賬。這是第三方軟件搶紅包方式。
但是如果是手機廠家,他們的做法就死紅包來了,提醒你,并不會主動搶。還有理有據的對外宣稱:我們不破壞微信原則,不會主動幫你搶!呵呵......
好多我心中一直神圣而偉大的一加氫OS系統站出來說出來了我的心里話,怒贊一個:
?
沒辦法,自稱是技術狗其實懂不點技術的我,
在網上找了這些搶紅包的源碼:
這些軟件大致使用AccessibilityService去一步步監聽微信的動作:
1、繼承AccessibilityService的類,如QiangHongBaoService,然后在AndroidManifest.xml里聲明組件,如下
android:label="@string/app_name"
android:name=".QiangHongBaoService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
android:name="android.accessibilityservice"
android:resource="@xml/qianghongbao_service_config"/>
在meta-data里聲明的是輔助配置,這個是Android4.0之后才支持的寫法,在4.0之前的系統要在代碼里聲明。
2、在res/xml目錄下生成輔助服務的配置文件qianghongbao_service_config.xml
android:description這個是設置服務的描述,在用戶授權的界面可以看到。
android:accessibilityEventTypes這個是配置要監聽的輔助事件,我們只需要用到typeNotificationStateChanged(通知變化事件)、typeWindowStateChanged(界面變化事件)
android:packageNames這個是要監聽應用的包名,如果要監聽多個應用,則用,去分隔,這里我們只需要監聽微信的就可以了。
3、在以上都配置好后,我們就可以在QiangHongBaoService這個服務里進行編碼了,要做的就是將整個UI跳轉流程與邏輯串聯起來。詳細看AccessibilityServiceInfo類文檔描述
@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) { //接收事件,如觸發了通知欄變化、界面變化等 }@Overrideprotected boolean onKeyEvent(KeyEvent event) { //接收按鍵事件
return super.onKeyEvent(event);
}@Overridepublic void onInterrupt() { //服務中斷,如授權關閉或者將服務殺死}@Overrideprotected void onServiceConnected() { super.onServiceConnected(); //連接服務后,一般是在授權成功后會接收到}。
那么,看完源碼后,
如何防止外掛呢?我總結了一點經驗。獨家分享:
在了解整個核心后,獲取事件不外乎就是通過文本與id判斷,
那么就可以將文本改為圖標方式,
將id改為動態id(每次顯示都是隨機生成),
這樣一來就可以提高外掛的門檻。
還是不懂,我這樣簡單說吧:
就是在發紅包前,
發送文本[微信紅包],
可以導致部分外掛工具失效。但不可能達到100%,建議大伙以后發送之前如果不閑麻煩可以嘗試下。
本文為浪里個男【個人微信:love2094520】原創文章。
原創不易,轉載請務必注明!
【文章末尾我教大伙一鍵屏蔽微信紅包插件?。。 ?/b>