這篇文章主要介紹了AccessibilityService如何實現(xiàn)微信發(fā)紅包功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司于2013年開始,先為龍泉驛等服務建站,龍泉驛等地企業(yè),進行企業(yè)商務咨詢服務。為龍泉驛企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。1.配置AccessibilityService,需要通過集成AccessibilityService來執(zhí)行操作。
public class TestAccessibilityService extends AccessibilityService { @Override public void onAccessibilityEvent(AccessibilityEvent event) { ... } @Override public void onInterrupt() { VirtualControlManager.getInstance().onCancel(); }}
使用時,需要在AndroidManifest.xml進行配置
在res文件夾下創(chuàng)建xml文件夾,存放accessibility_service_config.xml
這句話非常重要,后面會用到,切記
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);
網(wǎng)上很多啟動微信的代碼在setFlags中的參數(shù)都是我注釋的那段,用那段確實可以啟動微信,但是不能保證微信啟動后就是最原始的消息列表,而是微信任何界面(用戶上次操作微信停留的界面),這樣在想做模擬點擊的操作,要加好多的判斷界面的代碼和操作,那么能否我啟動微信時一定在消息列表呢,答案是可以的,那就是用下面這個flag,在啟動微信的時候肯定會到消息列表,省去了我們的操作。
Intent.FLAG_ACTIVITY_CLEAR_TOP
3.執(zhí)行操作
通過AccessibilityService的onAccessibilityEvent(...)方法,我們可以獲取到界面view的信息,用getRootInActiveWindow(),一步步通過view的id,來模擬操作,到發(fā)紅包界面。
這里需要注意,微信在跳轉(zhuǎn)到紅包界面的時候是有一個dialog加載動畫的,不少人在跳轉(zhuǎn)到發(fā)紅包界面時,通過getRootInActiveWindow()獲取到的對象不是null就是節(jié)點信息不對,這是因為一個dialog快速加載過去了,部分機器能看一閃的效果,如果手機性能比較好,這個dialog可能就看不到,但是代碼執(zhí)行的時候就拿不到節(jié)點信息。
嘗試過加延時,但是延時過后,onAccessibilityEvent方法不執(zhí)行,還是等于沒有。
這時候就需要用到開篇講的了這段代碼了:
android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"
加上這段代碼后,我們就能通過onAccessibilityEvent來獲取到發(fā)紅包界面的view了,發(fā)一段在發(fā)紅包界面填寫金額的代碼:
private void sendLuckMoney() { AccessibilityNodeInfo rootInfo = accessibilityService.getRootInActiveWindow(); if (rootInfo != null) { List
感謝你能夠認真閱讀完這篇文章,希望小編分享的“AccessibilityService如何實現(xiàn)微信發(fā)紅包功能”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設公司,,關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!