日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

学习AccessibilityService实现微信抢红包插件

發(fā)布時(shí)間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习AccessibilityService实现微信抢红包插件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文鏈接:http://blog.csdn.net/qq_30379689/article/details/53242953

在你的手機(jī)更多設(shè)置或者高級(jí)設(shè)置中,我們會(huì)發(fā)現(xiàn)有個(gè)無(wú)障礙的功能,很多人不知道這個(gè)功能具體是干嘛的,其實(shí)這個(gè)功能是為了增強(qiáng)用戶界面以幫助殘障人士,或者可能暫時(shí)無(wú)法與設(shè)備充分交互的人們

它的具體實(shí)現(xiàn)是通過(guò)AccessibilityService服務(wù)運(yùn)行在后臺(tái)中,通過(guò)AccessibilityEvent接收指定事件的回調(diào)。這樣的事件表示用戶在界面中的一些狀態(tài)轉(zhuǎn)換,例如:焦點(diǎn)改變了,一個(gè)按鈕被點(diǎn)擊,等等。這樣的服務(wù)可以選擇請(qǐng)求活動(dòng)窗口的內(nèi)容的能力。簡(jiǎn)單的說(shuō)AccessibilityService就是一個(gè)后臺(tái)監(jiān)控服務(wù),當(dāng)你監(jiān)控的內(nèi)容發(fā)生改變時(shí),就會(huì)調(diào)用后臺(tái)服務(wù)的回調(diào)方法

AccessibilityService使用

1.1 創(chuàng)建服務(wù)類

編寫自己的Service類,重寫onServiceConnected()方法、onAccessibilityEvent()方法和onInterrupt()方法

public class QHBAccessibilityService extends AccessibilityService {/*** 當(dāng)啟動(dòng)服務(wù)的時(shí)候就會(huì)被調(diào)用*/@Overrideprotected void onServiceConnected() {super.onServiceConnected();}/*** 監(jiān)聽(tīng)窗口變化的回調(diào)*/@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {int eventType = event.getEventType();//根據(jù)事件回調(diào)類型進(jìn)行處理}/*** 中斷服務(wù)的回調(diào)*/@Overridepublic void onInterrupt() {} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

下面是對(duì)AccessibilityService中常用的方法的介紹

  • disableSelf():禁用當(dāng)前服務(wù),也就是在服務(wù)可以通過(guò)該方法停止運(yùn)行
  • findFoucs(int falg):查找擁有特定焦點(diǎn)類型的控件
  • getRootInActiveWindow():如果配置能夠獲取窗口內(nèi)容,則會(huì)返回當(dāng)前活動(dòng)窗口的根結(jié)點(diǎn)
  • getSeviceInfo():獲取當(dāng)前服務(wù)的配置信息
  • onAccessibilityEvent(AccessibilityEvent event):有關(guān)AccessibilityEvent事件的回調(diào)函數(shù),系統(tǒng)通過(guò)sendAccessibiliyEvent()不斷的發(fā)送AccessibilityEvent到此處
  • performGlobalAction(int action):執(zhí)行全局操作,比如返回,回到主頁(yè),打開(kāi)最近等操作
  • setServiceInfo(AccessibilityServiceInfo info):設(shè)置當(dāng)前服務(wù)的配置信息
  • getSystemService(String name):獲取系統(tǒng)服務(wù)
  • onKeyEvent(KeyEvent event):如果允許服務(wù)監(jiān)聽(tīng)按鍵操作,該方法是按鍵事件的回調(diào),需要注意,這個(gè)過(guò)程發(fā)生了系統(tǒng)處理按鍵事件之前
  • onServiceConnected():系統(tǒng)成功綁定該服務(wù)時(shí)被觸發(fā),也就是當(dāng)你在設(shè)置中開(kāi)啟相應(yīng)的服務(wù),系統(tǒng)成功的綁定了該服務(wù)時(shí)會(huì)觸發(fā),通常我們可以在這里做一些初始化操作
  • onInterrupt():服務(wù)中斷時(shí)的回調(diào)

1.2 聲明服務(wù)

既然是個(gè)后臺(tái)服務(wù),那么就需要我們?cè)趍anifests中配置該服務(wù)信息

<service android:name=".AccessibilityService.QHBAccessibilityService"android:enabled="true"android:exported="true"android:label="@string/label"android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"><intent-filter><action android:name="android.accessibilityservice.AccessibilityService" /></intent-filter> </service>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

我們必須注意:任何一個(gè)信息配置錯(cuò)誤,都會(huì)使該服務(wù)無(wú)反應(yīng)

  • android:label:在無(wú)障礙列表中顯示該服務(wù)的名字?
  • android:permission:需要指定BIND_ACCESSIBILITY_SERVICE權(quán)限,這是4.0以上的系統(tǒng)要求的
  • intent-filter:這個(gè)name是固定不變的

1.3 配置服務(wù)參數(shù)

配置服務(wù)參數(shù)是指:配置用來(lái)接受指定類型的事件,監(jiān)聽(tīng)指定package,檢索窗口內(nèi)容,獲取事件類型的時(shí)間等等。其配置服務(wù)參數(shù)有兩種方法:

  • 方法一:安卓4.0之后可以通過(guò)meta-data標(biāo)簽指定xml文件進(jìn)行配置
  • 方法二:通過(guò)代碼動(dòng)態(tài)配置參數(shù)

1.3.1 方法一

在原先的manifests中增加meta-data標(biāo)簽指定xml文件

<service android:name=".AccessibilityService.QHBAccessibilityService"android:enabled="true"android:exported="true"android:label="@string/label"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/accessibility_service_config" /> </service>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

接下來(lái)是accessibility_service_config文件的配置

<?xml version="1.0" encoding="utf-8"?> <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged|typeWindowContentChanged|typeWindowsChanged"android:accessibilityFeedbackType="feedbackGeneric"android:accessibilityFlags="flagDefault"android:canRetrieveWindowContent="true"android:description="@string/description"android:notificationTimeout="100"android:packageNames="com.tencent.mm" />
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

下面是對(duì)xml參數(shù)的介紹

  • accessibilityEventTypes:表示該服務(wù)對(duì)界面中的哪些變化感興趣,即哪些事件通知,比如窗口打開(kāi),滑動(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
  • description:對(duì)該無(wú)障礙功能的描述,具體體現(xiàn)在下圖?
  • notificationTimeout:接受事件的時(shí)間間隔,通常將其設(shè)置為100即可
  • packageNames:表示對(duì)該服務(wù)是用來(lái)監(jiān)聽(tīng)哪個(gè)包的產(chǎn)生的事件,這里以微信的包名為例

1.3.2 方法二

通過(guò)代碼為我們的AccessibilityService配置AccessibilityServiceInfo信息,這里我們可以抽取成一個(gè)方法進(jìn)行設(shè)置

private void settingAccessibilityInfo() {String[] packageNames = {"com.tencent.mm"};AccessibilityServiceInfo mAccessibilityServiceInfo = new AccessibilityServiceInfo();// 響應(yīng)事件的類型,這里是全部的響應(yīng)事件(長(zhǎng)按,單擊,滑動(dòng)等)mAccessibilityServiceInfo.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;// 反饋給用戶的類型,這里是語(yǔ)音提示mAccessibilityServiceInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;// 過(guò)濾的包名mAccessibilityServiceInfo.packageNames = packageNames;setServiceInfo(mAccessibilityServiceInfo); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在這里涉及到了AccessibilityServiceInfo類,AccessibilityServiceInfo類被用于配置AccessibilityService信息,該類中包含了大量用于配置的常量字段及用來(lái)xml屬性,常見(jiàn)的有:accessibilityEventTypes,canRequestFilterKeyEvents,packageNames等等

1.4 啟動(dòng)服務(wù)

這里我們需要在無(wú)障礙功能里面手動(dòng)打開(kāi)該項(xiàng)功能,否則無(wú)法繼續(xù)進(jìn)行,通過(guò)下面代碼可以打開(kāi)系統(tǒng)的無(wú)障礙功能列表。此處若不理解,也可以先跳過(guò)或先下載下來(lái)代碼對(duì)照理解。

Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent);
  • 1
  • 2
  • 1
  • 2

1.5 處理事件信息

由于我們監(jiān)聽(tīng)了事件的通知欄和界面等信息,當(dāng)我們指定packageNames的通知欄或者界面發(fā)生變化時(shí),會(huì)通過(guò)onAccessibilityEvent回調(diào)我們的事件,接著進(jìn)行事件的處理

@Override public void onAccessibilityEvent(AccessibilityEvent event) {int eventType = event.getEventType();//根據(jù)事件回調(diào)類型進(jìn)行處理switch (eventType) {//當(dāng)通知欄發(fā)生改變時(shí)case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:break;//當(dāng)窗口的狀態(tài)發(fā)生改變時(shí)case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:break;} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

當(dāng)我們微信收到通知時(shí),狀態(tài)欄會(huì)有一條推送信息到達(dá),這個(gè)時(shí)候就會(huì)被TYPE_NOTIFICATION_STATE_CHANGED監(jiān)聽(tīng),執(zhí)行里面的內(nèi)容,當(dāng)我們切換微信界面時(shí),或者使用微信時(shí),這個(gè)時(shí)候就會(huì)被TYPE_WINDOW_STATE_CHANGED監(jiān)聽(tīng),執(zhí)行里面的內(nèi)容

AccessibilityEvent的方法

  • getEventType():事件類型
  • getSource():獲取事件源對(duì)應(yīng)的結(jié)點(diǎn)信息
  • getClassName():獲取事件源對(duì)應(yīng)類的類型,比如點(diǎn)擊事件是有某個(gè)Button產(chǎn)生的,那么此時(shí)獲取的就是Button的完整類名
  • getText():獲取事件源的文本信息,比如事件是有TextView發(fā)出的,此時(shí)獲取的就是TextView的text屬性。如果該事件源是樹結(jié)構(gòu),那么此時(shí)獲取的是這個(gè)樹上所有具有text屬性的值的集合
  • isEnabled():事件源(對(duì)應(yīng)的界面控件)是否處在可用狀態(tài)
  • getItemCount():如果事件源是樹結(jié)構(gòu),將返回該樹根節(jié)點(diǎn)下子節(jié)點(diǎn)的數(shù)量

1.6 獲取節(jié)點(diǎn)信息

獲取了界面窗口變化后,這個(gè)時(shí)候就要獲取控件的節(jié)點(diǎn)。整個(gè)窗口的節(jié)點(diǎn)本質(zhì)是個(gè)樹結(jié)構(gòu),通過(guò)以下操作節(jié)點(diǎn)信息

1.6.1 獲取窗口節(jié)點(diǎn)(根節(jié)點(diǎn))

AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
  • 1
  • 1

1.6.2 獲取指定子節(jié)點(diǎn)(控件節(jié)點(diǎn))

//通過(guò)文本找到對(duì)應(yīng)的節(jié)點(diǎn)集合 List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText(text); //通過(guò)控件ID找到對(duì)應(yīng)的節(jié)點(diǎn)集合,如com.tencent.mm:id/gd List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId);
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

1.7 模擬節(jié)點(diǎn)點(diǎn)擊

當(dāng)我們獲取了節(jié)點(diǎn)信息之后,對(duì)控件節(jié)點(diǎn)進(jìn)行模擬點(diǎn)擊、長(zhǎng)按等操作,AccessibilityNodeInfo類提供了performAction()方法讓我們執(zhí)行模擬操作,具體操作可看官方文檔介紹,這里列舉常用的操作

//模擬點(diǎn)擊 accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK); //模擬長(zhǎng)按 accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_LONG_CLICK); //模擬獲取焦點(diǎn) accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_FOCUS); //模擬粘貼 accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_PASTE);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

搶紅包插件實(shí)現(xiàn)

2.1 原理分析

  • 收到微信紅包的推送信息,在推送信息中判斷是否出現(xiàn)”[微信紅包]”的消息提示,如果出現(xiàn)則點(diǎn)擊進(jìn)入聊天界面
  • 通過(guò)遍歷窗口樹節(jié)點(diǎn),發(fā)現(xiàn)帶有”領(lǐng)取紅包”字樣的節(jié)點(diǎn),則點(diǎn)擊進(jìn)入,即紅包,彈出搶紅包界面
  • 在搶紅包界面,通過(guò)ID獲取”開(kāi)”按鈕的節(jié)點(diǎn),則打開(kāi)紅包
  • 在紅包詳情頁(yè)面,通過(guò)ID獲取返回鍵按鈕的節(jié)點(diǎn),點(diǎn)擊并返回微信聊天界面
  • 2.2 注意事項(xiàng)

  • 由于微信每個(gè)版本的按鈕ID都是不一樣的,在我們的程序中是需要去修改按鈕ID,以達(dá)到版本的適配
  • 在獲取控件ID的時(shí)候,注意其布局是否可點(diǎn)擊,否則獲取不可點(diǎn)擊的控件,會(huì)使程序無(wú)反應(yīng)
  • 2.3 獲取控件ID

    當(dāng)我們手機(jī)接入U(xiǎn)SB線時(shí),在Android?Device Monitor中的選擇設(shè)備并開(kāi)啟Dump View Hierarchy for UI Automator工具,通過(guò)它可以獲取控件信息

    http://www.cnblogs.com/xdindex/p/4619675.html

    獲取”開(kāi)”按鈕ID和返回按鈕ID

    2.4 代碼實(shí)現(xiàn)

    注意:這里使用的是微信最新6.3.30版本的控件ID,如果是其他版本的請(qǐng)自行適配

    public class QHBAccessibilityService extends AccessibilityService {private List<AccessibilityNodeInfo> parents;/*** 當(dāng)啟動(dòng)服務(wù)的時(shí)候就會(huì)被調(diào)用*/@Overrideprotected void onServiceConnected() {super.onServiceConnected();parents = new ArrayList<>();}/*** 監(jiān)聽(tīng)窗口變化的回調(diào)*/@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {int eventType = event.getEventType();switch (eventType) {//當(dāng)通知欄發(fā)生改變時(shí)case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:List<CharSequence> texts = event.getText();if (!texts.isEmpty()) {for (CharSequence text : texts) {String content = text.toString();if (content.contains("[微信紅包]")) {//模擬打開(kāi)通知欄消息,即打開(kāi)微信if (event.getParcelableData() != null &&event.getParcelableData() instanceof Notification) {Notification notification = (Notification) event.getParcelableData();PendingIntent pendingIntent = notification.contentIntent;try {pendingIntent.send();Log.e("demo","進(jìn)入微信");} catch (Exception e) {e.printStackTrace();}}}}}break;//當(dāng)窗口的狀態(tài)發(fā)生改變時(shí)case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:String className = event.getClassName().toString();if (className.equals("com.tencent.mm.ui.LauncherUI")) {//點(diǎn)擊最后一個(gè)紅包Log.e("demo","點(diǎn)擊紅包");getLastPacket();} else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI")) {//開(kāi)紅包Log.e("demo","開(kāi)紅包");inputClick("com.tencent.mm:id/bg7");} else if (className.equals("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI")) {//退出紅包Log.e("demo","退出紅包");inputClick("com.tencent.mm:id/gd");}break;}}/*** 通過(guò)ID獲取控件,并進(jìn)行模擬點(diǎn)擊* @param clickId*/@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)private void inputClick(String clickId) {AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();if (nodeInfo != null) {List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(clickId);for (AccessibilityNodeInfo item : list) {item.performAction(AccessibilityNodeInfo.ACTION_CLICK);}}}/*** 獲取List中最后一個(gè)紅包,并進(jìn)行模擬點(diǎn)擊*/private void getLastPacket() {AccessibilityNodeInfo rootNode = getRootInActiveWindow();recycle(rootNode);if(parents.size()>0){parents.get(parents.size() - 1).performAction(AccessibilityNodeInfo.ACTION_CLICK);}}/*** 回歸函數(shù)遍歷每一個(gè)節(jié)點(diǎn),并將含有"領(lǐng)取紅包"存進(jìn)List中** @param info*/public void recycle(AccessibilityNodeInfo info) {if (info.getChildCount() == 0) {if (info.getText() != null) {if ("領(lǐng)取紅包".equals(info.getText().toString())) {if (info.isClickable()) {info.performAction(AccessibilityNodeInfo.ACTION_CLICK);}AccessibilityNodeInfo parent = info.getParent();while (parent != null) {if (parent.isClickable()) {parents.add(parent);break;}parent = parent.getParent();}}}} else {for (int i = 0; i < info.getChildCount(); i++) {if (info.getChild(i) != null) {recycle(info.getChild(i));}}}}/*** 中斷服務(wù)的回調(diào)*/@Overridepublic void onInterrupt() {} }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134

    當(dāng)收到紅包發(fā)送的時(shí)候,Log的打印信息

    11-21 13:53:06.275 2909-2909/com.handsome.boke2 E/demo: 進(jìn)入微信 11-21 13:53:06.921 2909-2909/com.handsome.boke2 E/demo: 點(diǎn)擊紅包 11-21 13:53:07.883 2909-2909/com.handsome.boke2 E/demo: 開(kāi)紅包 11-21 13:53:08.732 2909-2909/com.handsome.boke2 E/demo: 退出紅包
    • 1
    • 2
    • 3
    • 4
    • 1
    • 2
    • 3
    • 4

    你可能會(huì)想到做一些竊取信息的軟件,比如獲取QQ密碼、支付寶密碼等等,哈哈,凡是EditText中設(shè)置inputType為password類型的,都無(wú)法獲取其輸入值

    2.5 源碼下載

    源碼下載 或者h(yuǎn)ttps://github.com/gongmingming

    總結(jié)

    以上是生活随笔為你收集整理的学习AccessibilityService实现微信抢红包插件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。