微信抢红包插件与Android辅助功能
? ? ??逢年過節大家都少不了發微信紅包,通過微信紅包來表達祝福。同時,微信還有拼手氣群紅包。各種群好友群,親戚群,工作群逢年過節常常會有紅包可搶。搶紅包的口訣是:“網速要好,手速要快”。搶到紅包固然欣喜,搶不到紅包的失落和遺憾的感覺卻讓人非常不爽。有時等紅包等了很久,明明看到了一點開就被搶完。還有人等了很久,剛花了幾分鐘時間去做其他事,就有人發紅包。損失了一個億啊有木有……自從有了微信紅包插件,再也不用擔心搶不到紅包了。就是單獨發給我的紅包,我也不用自己點開,可以自動拆紅包,一下子就解放了雙手。這里就不得不提到Android系統的輔助功能,又叫無障礙功能。
? ? ??Google為了讓更多的用戶可以使用Android系統,也為了可以幫助身體上有障礙的人士,給Android系統開發了輔助功能。輔助功能可以做很多事情,比如讀出屏幕上的內容,模擬真實的用戶點擊等。
? ? ??下面我們就來模擬實現一下搶紅包功能,這里實現兩個應用程序,一個用來模擬微信紅包,另一個模擬紅包插件。
? ? ??先來看一下模擬紅包的這個應用。新建一個工程,命名為RedPacket。RedPacket里定義了一個Button,默認文本為“查看紅包”。當點擊一次會顯示未“200元”,再次點擊又重新變為“查看紅包”。 布局文件activity_main.xml如下:
? ? ??在文件MainActivity.java文件中,給按鈕添加響應事件。點擊一次文本變為“200元”;再點擊又變回“查看紅包”。這樣我們的模擬微信紅包的軟件就寫好了。
? ? ??接下來,我們再來寫一個應用模擬微信搶紅包插件。新建一個工程,命名為AccessibilityClick(輔助點擊)。使用Android的輔助功能來實現自動點擊操作。這里要用到Android的一個類AccessibilityService。
實現一個類繼承自AccessibilityService
public class MyAccessibilityService extends AccessibilityService在AndroidManifest.xml文件中注冊
<service android:name=".MyAccessibilityService"android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" /> </service>?注意上面注冊過程中請求了一個權限android:permission=”android.permission.BIND_ACCESSIBILITY_SERVICE”
? ? ??同時這里有一個accessibilityservice.xml文件,里面有對于該輔助功能的一些配置。該文件是我們自己新建的,放置在xml目錄下。如果沒有該目錄,應新建一個xml目錄。這里我們的配置如下:
<?xml version="1.0" encoding="utf-8"?> <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"android:accessibilityEventTypes="typeAllMask"android:accessibilityFeedbackType="feedbackGeneric"android:accessibilityFlags="flagRequestFilterKeyEvents"android:canRetrieveWindowContent="true"android:canRequestFilterKeyEvents="true"android:description="@string/description"android:packageNames= "com.gucheng.redpacket"> </accessibility-service>上面的description屬性是是對該輔助功能的描述,在設置里看到的就是這個。
<string name="description">模擬點擊</string>? ? ??這里加上packageName的屬性是為了區分接收哪個應用的消息,如果沒有寫這個屬性的話,默認接收所有應用的消息。
重寫onAccessibilityEvent方法
? ? ??在實現的MyAccessibilityService類中,我們必須要重寫兩個方法。一個是onInterrupt,另一個是onAccessibilityEvent。如下圖;
? ? ??上圖中,顯示通過getRootInActiveWindow()獲取了根視圖,再從根視圖中找到含有“查看紅包”字樣的控件,用performAction(AccessibilityNodeInfo.ACTION_CLICK)來模擬點擊事件。
最后實現的效果如下:
? ? ??在設置中打開AccessibilityClick的開關后,再進入RedPacket應用,自動就把“紅包”拆開了。每次點擊“200元”字樣后,按鈕字樣剛變為“查看紅包”就會立刻變為“200元”。這個變化的速度非常快以致于看不清楚“查看紅包”這幾個字。只是一閃而過。
最后,總結一下實現安卓輔助功能需要以下幾步:
? ? ??a. 實現一個類繼承自AccessibilityService
? ? ??b. 在AndroidManifest.xml文件中注冊
? ? ??c. 重寫onAccessibilityEvent方法,在該方法中接收應用變化的消息,并進行相應處理。
貼上本文中寫的兩個模擬的小程序地址:
模擬紅包地址:
? ? ??https://github.com/gucheng3116/redpacket
模擬搶紅包插件地址:
? ? ??https://github.com/gucheng3116/redpacket_AccessibilityClick
最后貼上親測可用的微信搶紅包插件源碼地址:
? ? ??https://github.com/geeeeeeeeek/WeChatLuckyMoney
總結
以上是生活随笔為你收集整理的微信抢红包插件与Android辅助功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java虚方法和抽象方法_虚方法和抽象方
- 下一篇: google hacking搜索语法总结