微信自动回复和自动抢红包实现原理(一):AccessibilityService的介绍和配置
1. AccessibilityService的介紹
前幾天在瀏覽技術博客時,看到一篇文章自動搶紅包,自動安裝原理之AccessibilityService。發現了Android提供了一個很有趣的輔助類——AccessibilityService!決定自己也來探索一番。
先來看看AccessibilityService官方的介紹:
Accessibility services are intended to assist users with disabilities in using Android devices and apps. They run in the background and receive callbacks by the system whenAccessibilityEvents are fired. Such events denote some state transition in the user interface, for example, the focus has changed, a button has been clicked, etc. Such a service can optionally request the capability for querying the content of the active window. Development of an accessibility service requires extending this class and implementing its abstract methods.
英語不好,就不獻丑了,大概意思是AccessibilityServices能輔助用戶使用Android設備和app,其運行在后臺并會監聽系統諸如窗體改變、按鈕點擊等AccessibilityEvent事件,然后我們就能根據這些事件來完成一些操作了。也就是說,AccessibilityService能釋放我們的雙手,輔助我們完成一些我們平常主動地操作手機的動作。我的理解是,主要我們愿意并且不怕麻煩,幾乎能用AccessibilityService使我們的手機完成自動化。
2. AccessibilityService的創建和配置:
先創建于繼承與AccessibilityService的類:
public class MyAccessibilityService extends AccessibilityService{ public void onAccessibilityEvent(AccessibilityEvent event) { } public void onInterrupt() { } }AccessibilityService是繼承于Service的,所以需要在AndroidMainfest.xml里聲明:
<service android:name="com.leo.service.MyAccessibilityService" android:enabled="true" android:exported="true" android:label="@string/MyAccessibilityService" 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/my_service_config" /> </service>細心的朋友應該注意到了,要為AccessibilityService指定好配置文件res/xml/my_service_config.xml:
xml version="1.0" encoding="utf-8" <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes="typeAllMask" // 指定接收事件類型,typeAllMask代表全部都接收android:accessibilityFeedbackType="feedbackGeneric" // 反饋方式android:canRetrieveWindowContent="true" // 是否能獲取活動窗口內容,這個很重要哦android:description="@string/auto_reply_description" // 對服務的描述android:notificationTimeout="100" // 響應事件的間隔,單位為毫秒android:packageNames="com.tencent.mm" /> // 指定監聽的應用程序的包名,這里我指定了微信的包名也可以重寫onServiceConnected()在代碼里配置:
@Overrideprotected void onServiceConnected() {AccessibilityServiceInfo = new AccessibilityServiceInfo();.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;.packageNames = new String[]{Config.WX_PACKAGE_NAME}; .feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;.notificationTimeout = 100;this.setServiceInfo();}最后加上權限:
<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>然后我們把程序安裝到手機-->設置-->輔助功能-->開啟服務。到這里我們已經完成AccessibilityService的配置了。當然它還不能做任何事,因為我們只是配置好,并沒有做任何操作。了解了AccessibilityService后,接下來就可以進入主題了:
- 微信自動回復
- 微信自動搶紅包
與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的微信自动回复和自动抢红包实现原理(一):AccessibilityService的介绍和配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android微信自动回复功能
- 下一篇: 微信自动回复和自动抢红包实现原理(二):