中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

AccessibilityService如何實現微信發紅包功能

發布時間:2021-09-27 15:31:26 來源:億速云 閱讀:193 作者:小新 欄目:編程語言

這篇文章主要介紹了AccessibilityService如何實現微信發紅包功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

1.配置AccessibilityService,需要通過集成AccessibilityService來執行操作。

public class TestAccessibilityService extends AccessibilityService {  @Override  public void onAccessibilityEvent(AccessibilityEvent event) {    ...  }  @Override  public void onInterrupt() {    VirtualControlManager.getInstance().onCancel();  }}

使用時,需要在AndroidManifest.xml進行配置

<service android:name=".TestAccessibilityService"   android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"   android:label="@string/accessibility_service_label">  <intent-filter>      <action android:name="android.accessibilityservice.AccessibilityService" />  </intent-filter>   <meta-data      android:name="android.accessibilityservice"      android:resource="@xml/accessibility_service_config" /></service>

在res文件夾下創建xml文件夾,存放accessibility_service_config.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="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"  android:canRetrieveWindowContent="true"  android:description="@string/accessibility_service_description"  android:notificationTimeout="100"/>  <!--accessibilityEventTypes:表示該服務對界面中的哪些變化感興趣,即哪些事件通知,比如窗口打開,滑動,  焦點變化,長按等.具體的值可以在AccessibilityEvent類中查到,如typeAllMask表示接受所有的事件通知.-->  <!--accessibilityFeedbackType:表示反饋方式,比如是語音播放,還是震動-->  <!--canRetrieveWindowContent:表示該服務能否訪問活動窗口中的內容.也就是如果你希望在服務中獲取窗體內容的化,則需要設置其值為true.-->  <!--notificationTimeout:接受事件的時間間隔,通常將其設置為100即可.-->  <!--packageNames:表示對該服務是用來監聽哪個包的產生的事件-->

這句話非常重要,后面會用到,切記

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"

2.啟動微信

Intent intent = new Intent(Intent.ACTION_MAIN);//  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent//  .FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);        //加這個flag為了讓微信能夠進入的時候在會話列表        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        intent.addCategory(Intent.CATEGORY_LAUNCHER);        ComponentName cn = new ComponentName(“com.tencent.mm”, “com.tencent.mm.ui.LauncherUI”);        intent.setComponent(cn);        context.startActivity(intent);

網上很多啟動微信的代碼在setFlags中的參數都是我注釋的那段,用那段確實可以啟動微信,但是不能保證微信啟動后就是最原始的消息列表,而是微信任何界面(用戶上次操作微信停留的界面),這樣在想做模擬點擊的操作,要加好多的判斷界面的代碼和操作,那么能否我啟動微信時一定在消息列表呢,答案是可以的,那就是用下面這個flag,在啟動微信的時候肯定會到消息列表,省去了我們的操作。

Intent.FLAG_ACTIVITY_CLEAR_TOP

3.執行操作

通過AccessibilityService的onAccessibilityEvent(...)方法,我們可以獲取到界面view的信息,用getRootInActiveWindow(),一步步通過view的id,來模擬操作,到發紅包界面。

這里需要注意,微信在跳轉到紅包界面的時候是有一個dialog加載動畫的,不少人在跳轉到發紅包界面時,通過getRootInActiveWindow()獲取到的對象不是null就是節點信息不對,這是因為一個dialog快速加載過去了,部分機器能看一閃的效果,如果手機性能比較好,這個dialog可能就看不到,但是代碼執行的時候就拿不到節點信息。

嘗試過加延時,但是延時過后,onAccessibilityEvent方法不執行,還是等于沒有。

這時候就需要用到開篇講的了這段代碼了:

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"

加上這段代碼后,我們就能通過onAccessibilityEvent來獲取到發紅包界面的view了,發一段在發紅包界面填寫金額的代碼:

private void sendLuckMoney() {    AccessibilityNodeInfo rootInfo = accessibilityService.getRootInActiveWindow();    if (rootInfo != null) {      List<AccessibilityNodeInfo> nodeInfoList = rootInfo.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/clu");      for (AccessibilityNodeInfo nodeInfo : nodeInfoList) {        Bundle arguments = new Bundle();        arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "10");        nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);      }    }  }

感謝你能夠認真閱讀完這篇文章,希望小編分享的“AccessibilityService如何實現微信發紅包功能”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

醴陵市| 响水县| 衡阳市| 茂名市| 大城县| 凌云县| 启东市| 景宁| 安丘市| 洛阳市| 土默特左旗| 南投县| 新干县| 达孜县| 宁陕县| 宣化县| 二连浩特市| 沐川县| 林州市| 平湖市| 漠河县| 怀仁县| 佳木斯市| 霞浦县| 隆化县| 积石山| 安国市| 林西县| 娱乐| 德昌县| 鹿邑县| 承德县| 绿春县| 云和县| 金川县| 平江县| 沿河| 新野县| 甘泉县| 建德市| 岗巴县|