欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

Android

當(dāng)前位置:主頁(yè) > 軟件編程 > Android >

AccessibilityService實(shí)現(xiàn)微信發(fā)紅包功能

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:Android|點(diǎn)擊: 次

在AccessibilityService中我們可以做模擬操作,下面記述下通過(guò)AccessibilityService實(shí)現(xiàn)微信發(fā)紅包的功能

1.配置AccessibilityService,需要通過(guò)集成AccessibilityService來(lái)執(zhí)行操作。

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

使用時(shí),需要在AndroidManifest.xml進(jìn)行配置

<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文件夾下創(chuàng)建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:表示該服務(wù)對(duì)界面中的哪些變化感興趣,即哪些事件通知,比如窗口打開,滑動(dòng),
  焦點(diǎn)變化,長(zhǎng)按等.具體的值可以在AccessibilityEvent類中查到,如typeAllMask表示接受所有的事件通知.-->
  <!--accessibilityFeedbackType:表示反饋方式,比如是語(yǔ)音      ,還是震動(dòng)-->
  <!--canRetrieveWindowContent:表示該服務(wù)能否訪問(wèn)活動(dòng)窗口中的內(nèi)容.也就是如果你希望在服務(wù)中獲取窗體內(nèi)容的化,則需要設(shè)置其值為true.-->
  <!--notificationTimeout:接受事件的時(shí)間間隔,通常將其設(shè)置為100即可.-->
  <!--packageNames:表示對(duì)該服務(wù)是用來(lái)監(jiān)聽哪個(gè)包的產(chǎn)生的事件-->

這句話非常重要,后面會(huì)用到,切記

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"

2.啟動(dòng)微信

Intent intent = new Intent(Intent.ACTION_MAIN);
//  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent
//  .FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
 
        //加這個(gè)flag為了讓微信能夠進(jìn)入的時(shí)候在會(huì)話列表
        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)上很多啟動(dòng)微信的代碼在setFlags中的參數(shù)都是我注釋的那段,用那段確實(shí)可以啟動(dòng)微信,但是不能保證微信啟動(dòng)后就是最原始的消息列表,而是微信任何界面(用戶上次操作微信停留的界面),這樣在想做模擬點(diǎn)擊的操作,要加好多的判斷界面的代碼和操作,那么能否我啟動(dòng)微信時(shí)一定在消息列表呢,答案是可以的,那就是用下面這個(gè)flag,在啟動(dòng)微信的時(shí)候肯定會(huì)到消息列表,省去了我們的操作。

Intent.FLAG_ACTIVITY_CLEAR_TOP

3.執(zhí)行操作

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

這里需要注意,微信在跳轉(zhuǎn)到紅包界面的時(shí)候是有一個(gè)dialog加載動(dòng)畫的,不少人在跳轉(zhuǎn)到發(fā)紅包界面時(shí),通過(guò)getRootInActiveWindow()獲取到的對(duì)象不是null就是節(jié)點(diǎn)信息不對(duì),這是因?yàn)橐粋€(gè)dialog快速加載過(guò)去了,部分機(jī)器能看一閃的效果,如果手機(jī)性能比較好,這個(gè)dialog可能就看不到,但是代碼執(zhí)行的時(shí)候就拿不到節(jié)點(diǎn)信息。

嘗試過(guò)加延時(shí),但是延時(shí)過(guò)后,onAccessibilityEvent方法不執(zhí)行,還是等于沒(méi)有。

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

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews"

加上這段代碼后,我們就能通過(guò)onAccessibilityEvent來(lái)獲取到發(fā)紅包界面的view了,發(fā)一段在發(fā)紅包界面填寫金額的代碼:

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);
      }
 
    }
  }

 以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:Android自定義控件實(shí)現(xiàn)時(shí)鐘效果

欄    目:Android

下一篇:Android自定義字母導(dǎo)航欄

本文標(biāo)題:AccessibilityService實(shí)現(xiàn)微信發(fā)紅包功能

本文地址:http://mengdiqiu.com.cn/a1/Android/8999.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有