Android 輔助功能 -搶紅包

Android 輔助功能 -搶紅包

本篇文章主要介紹下通過android輔助功能的方式來實(shí)現(xiàn)類似搶紅包的功能.

1:權(quán)限聲明

<uses-permission
    android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"
    tools:ignore="ProtectedPermissions" />

2: 配置信息

xml目錄下創(chuàng)建如下文件:

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackAllMask"
    android:accessibilityFlags="flagDefault"
    android:canRetrieveWindowContent="true"
    android:canRequestFilterKeyEvents="true"
    android:description="@string/desc"
    android:packageNames= "com.test.redpacket">
</accessibility-service>
  1. android:accessibilityEventTypes 定義服務(wù)要監(jiān)聽的事件類型
  2. android:accessibilityFeedbackType 定義了服務(wù)的反饋類型
  3. android:accessibilityFlags 定義服務(wù)的行為標(biāo)志
  4. android:description 描述信息 (需要使用資源文件配置)
  5. android:canRetrieveWindowContent 定義了服務(wù)是否可以獲取窗口內(nèi)容
  6. android:packageNames定義了監(jiān)聽的包名

3: 自定義AccessibilityService

具體的代碼如下:

public class RedPacketAccessibilityService extends AccessibilityService {
    private static final String TAG = "RedPacketAccessibilityService";

    @SuppressLint("LongLogTag")
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        int action = event.getAction();
        Log.i(TAG, "onAccessibilityEvent: " + action);
        CharSequence packageName = event.getPackageName();
        Log.i(TAG, "onAccessibilityEvent: " + packageName);
        AccessibilityNodeInfo rootInActiveWindow = getRootInActiveWindow();
        if (rootInActiveWindow != null) {
            List<AccessibilityNodeInfo> nodeInfos = rootInActiveWindow.findAccessibilityNodeInfosByText("紅包:恭喜發(fā)財(cái)");
            if (nodeInfos != null) {
                for (AccessibilityNodeInfo nodeInfo : nodeInfos) {
                    nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                }
            }
        }

    }

    @Override
    public void onInterrupt() {

    }
}

此處通過findAccessibilityNodeInfosByText來查找節(jié)點(diǎn)了, 我們還可以使用 findAccessibilityNodeInfosByViewId來實(shí)現(xiàn).

4: 服務(wù)聲明

在manifest.xml中聲明服務(wù).

<service
    android:name=".RedPacketAccessibilityService"
    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/acc" />
</service>

5: 測試代碼

public class MainActivity extends AppCompatActivity {
    private Button btnSend;
    private TextView tvMsg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnSend=findViewById(R.id.btn_send);
        tvMsg=findViewById(R.id.tv_msg);
        Intent serviceIntent = new Intent(this, RedPacketAccessibilityService.class);
        startService(serviceIntent);
        btnSend.setOnClickListener(v -> {
            tvMsg.setText("紅包:恭喜發(fā)財(cái)");
        });
        tvMsg.setOnClickListener(v -> {
            tvMsg.setText("消息展示");
            Toast.makeText(MainActivity.this,"搶紅包",Toast.LENGTH_SHORT).show();
        });
    }
}

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砾脑,一起剝皮案震驚了整個(gè)濱河市据悔,隨后出現(xiàn)的幾起案子传透,更是在濱河造成了極大的恐慌,老刑警劉巖极颓,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朱盐,死亡現(xiàn)場離奇詭異,居然都是意外死亡菠隆,警方通過查閱死者的電腦和手機(jī)兵琳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門狂秘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人躯肌,你說我怎么就攤上這事者春。” “怎么了羡榴?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵月帝,是天一觀的道長蜻直。 經(jīng)常有香客問我,道長袱贮,這世上最難降的妖魔是什么传惠? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任迄沫,我火速辦了婚禮,結(jié)果婚禮上卦方,老公的妹妹穿的比我還像新娘羊瘩。我一直安慰自己,他們只是感情好盼砍,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布尘吗。 她就那樣靜靜地躺著,像睡著了一般浇坐。 火紅的嫁衣襯著肌膚如雪睬捶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天近刘,我揣著相機(jī)與錄音擒贸,去河邊找鬼。 笑死觉渴,一個(gè)胖子當(dāng)著我的面吹牛介劫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播案淋,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼座韵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了踢京?” 一聲冷哼從身側(cè)響起誉碴,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎漱挚,沒想到半個(gè)月后翔烁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旨涝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年蹬屹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侣背。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡慨默,死狀恐怖贩耐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情厦取,我是刑警寧澤潮太,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站虾攻,受9級特大地震影響铡买,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霎箍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一奇钞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漂坏,春花似錦景埃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驯绎,卻和暖如春完慧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背条篷。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工骗随, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赴叹。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓鸿染,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乞巧。 傳聞我的和親對象是個(gè)殘疾皇子涨椒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容