有了這個再也不擔心任何微信紅包,Python就是好用~

爲了應對領導在羣裏時不時的一個紅包,寫一個搶紅包的應用迫在眉睫了。之前由於沒有自動搶紅包錯失了100RMB+的紅包啊!

先來整理下思路。要實現搶紅包,那麼就要在紅包來的時候去打開微信,執行點擊的動作。被點擊的控件肯定是帶有紅包關鍵字的。打開紅包後,還需要去點擊一下打開。

爲了實現上面的一系列步驟,方法有兩種。

  1. 從framwork進行修改。這種方式適合於自制rom。如手機廠商多采用這種方法。有個同事就通過這方法實現了紅包功能。

  2. 就只能通過google 提供了一個輔助服務類了。該類可以監聽通知、監聽窗口變化,模擬點擊等功能。該文就採用輔助服務類。

  3. 在這裏還是要推薦下我自己建的Python開發學習羣:483546416,羣裏都是學Python開發的,如果你正在學習Python ,小編歡迎你加入,大家都是軟件開發黨,不定期分享乾貨(只有Python軟件開發相關的),包括我自己整理的一份2018最新的Python進階資料和高級開發教程,歡迎進階中和進想深入Python的小夥伴

STEP1 輔助服務類的使用

通過配置manifest文件就可以使用輔助服務了。

<service android:name=".RedService" android:enabled="true" android:exported="true" 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/red_service_config" /> </service>

該服務可以進行配置,配置如下:

有了這個再也不擔心任何微信紅包,Python就是好用~

配置好後,該服務就可以使用了。可以通過一個按鈕引導用戶去開啓這個服務

有了這個再也不擔心任何微信紅包,Python就是好用~

因爲這個服務在系統設置裏,所以通過點擊去打開系統設置。然後就可以開啓次服務。

接下來就是重點了。

首先需要去繼承一個AccessibilityService 。

有了這個再也不擔心任何微信紅包,Python就是好用~

需要去重寫他的兩個方法。onAccessibilityEvent方法用來接收服務監聽的事件,此處爲通知和窗口變化。

現在先來看看 通知來的時候如何處理:

有了這個再也不擔心任何微信紅包,Python就是好用~

有了這個再也不擔心任何微信紅包,Python就是好用~

在打開微信後,會發生窗口狀態變化。這個時候該事件將會被監聽。

此處要說的是微信的聊天界面和聊天列表的界面其實是在一個activity。都爲

com.tencent.mm.ui.LauncherUI。

而且聊天界面是整個Activity contentView的父VIEW。通過解析頁面可以輕易的發現。

再新打開的頁面上,通過輔助類提供的方法對節點進行遍歷。

有了這個再也不擔心任何微信紅包,Python就是好用~

通過 AccessibilityNodeInfo nodeInfo = getRootInActiveWindow(); 獲取跟節點,同時也可以通過getchirld 方法來看看他的子節點。

在android.widget.FrameLayout下一共有8個子Node,不一一列舉。上面列舉了一個叫com.tencent.mm.ui.mogic.WxViewPager的view這個view 就是我們的聊天列表。

其餘7個分別是搜索、更多、微信、通信錄等。

&emsp;當我們在聊天頁面點擊紅包後,會彈出一個爲打開的紅包或者可能提示紅包已到期。重點說說正常情況下紅彈出紅包的情況。彈出紅包將會觸發一個event,該event爲窗口變化,由之前的窗口變爲了com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI。

這時候,我們可以繼續利用對節點的遍歷來實現點擊的動作。代碼如下:

有了這個再也不擔心任何微信紅包,Python就是好用~

至此,基本自動搶紅包的功能都完成了。爲了保證程序的健壯性,還需要對搶紅包的失敗的情況進行處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章