国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 微信小程序 微信開發(fā) 分享一個Android實現(xiàn)微信自動搶紅包的代碼實例

分享一個Android實現(xiàn)微信自動搶紅包的代碼實例

Apr 28, 2017 am 10:56 AM

簡單實現(xiàn)了微信自動搶紅包的服務(wù),原理就是根據(jù)關(guān)鍵字找到相應(yīng)的View, 然后自動點擊。主要是用到AccessibilityService這個輔助服務(wù),基本可以滿足自動搶紅包的功能,但是有些邏輯需要優(yōu)化,比如,拆完一個紅包后,必須手動點擊返回鍵,才能進行下一次自動搶紅包。

AndroidManifest.xml
   
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jackie.webchatenvelope" >
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
        <service
            android:enabled="true"
            android:exported="true"
            android:label="@string/app_name"
            android:name=".EnvelopeService"
            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/envelope_service_config"/>
        </service>
    </application>
 
</manifest>
   
envelope_service_config.xml
   
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeNotificationStateChanged|typeWindowStateChanged"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags=""
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibility_description"
    android:notificationTimeout="100"
    android:packageNames="com.tencent.mm" />
   
activity_main.xml
   
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
 
    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:layout_centerInParent="true"
        android:textSize="18sp"
        android:text="打開輔助服務(wù)"/>
 
</RelativeLayout>
   
MainActivity.java
   
package com.jackie.webchatenvelope; 
   
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 
   
public class MainActivity extends Activity { 
    private Button startBtn; 
   
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
   
        startBtn = (Button) findViewById(R.id.start); 
        startBtn.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                try { 
                    //打開系統(tǒng)設(shè)置中輔助功能 
                    Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS); 
                    startActivity(intent); 
                    Toast.makeText(MainActivity.this, "找到搶紅包,然后開啟服務(wù)即可", Toast.LENGTH_LONG).show(); 
                } catch (Exception e) { 
                    e.printStackTrace(); 
                } 
            } 
        }); 
    } 
   
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        // Inflate the menu; this adds items to the action bar if it is present. 
        getMenuInflater().inflate(R.menu.menu_main, menu); 
        return true; 
    } 
   
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        // Handle action bar item clicks here. The action bar will 
        // automatically handle clicks on the Home/Up button, so long 
        // as you specify a parent activity in AndroidManifest.xml. 
        int id = item.getItemId(); 
   
        //noinspection SimplifiableIfStatement 
        if (id == R.id.action_settings) { 
            return true; 
        } 
   
        return super.onOptionsItemSelected(item); 
    } 
}
   
EnvelopeService.java
   
package com.jackie.webchatenvelope;
 
import android.accessibilityservice.AccessibilityService;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.PendingIntent;
import android.os.Build;
import android.os.Handler;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.Toast;
 
import java.util.List;
 
/**
 * <p>Created by Administrator</p>
 * <p/>
 * 搶紅包外掛服務(wù)
 */
public class EnvelopeService extends AccessibilityService {
 
    static final String TAG = "Jackie";
 
    /**
     * 微信的包名
     */
    static final String WECHAT_PACKAGENAME = "com.tencent.mm";
    /**
     * 紅包消息的關(guān)鍵字
     */
    static final String ENVELOPE_TEXT_KEY = "[微信紅包]";
 
    Handler handler = new Handler();
 
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        final int eventType = event.getEventType();
 
        Log.d(TAG, "事件---->" + event);
 
        //通知欄事件
        if (eventType == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
            List<CharSequence> texts = event.getText();
            if (!texts.isEmpty()) {
                for (CharSequence t : texts) {
                    String text = String.valueOf(t);
                    if (text.contains(ENVELOPE_TEXT_KEY)) {
                        openNotification(event);
                        break;
                    }
                }
            }
        } else if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
            openEnvelope(event);
        }
    }
 
    /*@Override
    protected boolean onKeyEvent(KeyEvent event) {
        //return super.onKeyEvent(event);
        return true;
    }*/
 
    @Override
    public void onInterrupt() {
        Toast.makeText(this, "中斷搶紅包服務(wù)", Toast.LENGTH_SHORT).show();
    }
 
    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        Toast.makeText(this, "連接搶紅包服務(wù)", Toast.LENGTH_SHORT).show();
    }
 
    private void sendNotificationEvent() {
        AccessibilityManager manager = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE);
        if (!manager.isEnabled()) {
            return;
        }
        AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED);
        event.setPackageName(WECHAT_PACKAGENAME);
        event.setClassName(Notification.class.getName());
        CharSequence tickerText = ENVELOPE_TEXT_KEY;
        event.getText().add(tickerText);
        manager.sendAccessibilityEvent(event);
    }
 
    /**
     * 打開通知欄消息
     */
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void openNotification(AccessibilityEvent event) {
        if (event.getParcelableData() == null || !(event.getParcelableData() instanceof Notification)) {
            return;
        }
        //以下是精華,將微信的通知欄消息打開
        Notification notification = (Notification) event.getParcelableData();
        PendingIntent pendingIntent = notification.contentIntent;
        try {
            pendingIntent.send();
        } catch (PendingIntent.CanceledException e) {
            e.printStackTrace();
        }
    }
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void openEnvelope(AccessibilityEvent event) {
        if ("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyReceiveUI".equals(event.getClassName())) {
            //點中了紅包,下一步就是去拆紅包
            checkKey1();
        } else if ("com.tencent.mm.plugin.luckymoney.ui.LuckyMoneyDetailUI".equals(event.getClassName())) {
            //拆完紅包后看詳細的紀錄界面
            //nonething
        } else if ("com.tencent.mm.ui.LauncherUI".equals(event.getClassName())) {
            //在聊天界面,去點中紅包
            checkKey2();
        }
    }
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void checkKey1() {
        AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
        if (nodeInfo == null) {
            Log.w(TAG, "rootWindow為空");
            return;
        }
        List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("拆紅包");
        for (AccessibilityNodeInfo n : list) {
            n.performAction(AccessibilityNodeInfo.ACTION_CLICK);
        }
    }
 
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void checkKey2() {
        AccessibilityNodeInfo nodeInfo = getRootInActiveWindow();
        if (nodeInfo == null) {
            Log.w(TAG, "rootWindow為空");
            return;
        }
        List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("領(lǐng)取紅包");
        if (list.isEmpty()) {
            list = nodeInfo.findAccessibilityNodeInfosByText(ENVELOPE_TEXT_KEY);
            for (AccessibilityNodeInfo n : list) {
                Log.i(TAG, "-->微信紅包:" + n);
                n.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                break;
            }
        } else {
            //最新的紅包領(lǐng)起
            for (int i = list.size() - 1; i >= 0; i--) {
                AccessibilityNodeInfo parent = list.get(i).getParent();
                Log.i(TAG, "-->領(lǐng)取紅包:" + parent);
                if (parent != null) {
                    parent.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                    break;
                }
            }
        }
    }
}

以上是分享一個Android實現(xiàn)微信自動搶紅包的代碼實例的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
新報告對傳聞中的三星 Galaxy S25、Galaxy S25 Plus 和 Galaxy S25 Ultra 相機升級進行了嚴厲的評估 新報告對傳聞中的三星 Galaxy S25、Galaxy S25 Plus 和 Galaxy S25 Ultra 相機升級進行了嚴厲的評估 Sep 12, 2024 pm 12:23 PM

最近幾天,Ice Universe 不斷披露有關(guān) Galaxy S25 Ultra 的詳細信息,人們普遍認為這款手機將是三星的下一款旗艦智能手機。除此之外,泄密者聲稱三星只計劃升級一款相機

三星 Galaxy S25 Ultra 泄露了第一張渲染圖,傳聞中的設(shè)計變化被曝光 三星 Galaxy S25 Ultra 泄露了第一張渲染圖,傳聞中的設(shè)計變化被曝光 Sep 11, 2024 am 06:37 AM

OnLeaks 現(xiàn)在與 Android Headlines 合作,首次展示了 Galaxy S25 Ultra,幾天前,他試圖從他的 X(以前的 Twitter)粉絲那里籌集到 4,000 美元以上的資金,但失敗了。對于上下文,嵌入在 h 下面的渲染圖像

IFA 2024 | TCL 的 NXTPAPER 14 在性能上無法與 Galaxy Tab S10 Ultra 相媲美,但在尺寸上幾乎可以與之媲美 IFA 2024 | TCL 的 NXTPAPER 14 在性能上無法與 Galaxy Tab S10 Ultra 相媲美,但在尺寸上幾乎可以與之媲美 Sep 07, 2024 am 06:35 AM

除了發(fā)布兩款新智能手機外,TCL 還發(fā)布了一款名為 NXTPAPER 14 的新 Android 平板電腦,其大屏幕尺寸是其賣點之一。 NXTPAPER 14 采用 TCL 標志性品牌啞光液晶面板 3.0 版本

Vivo Y300 Pro 在 7.69 毫米纖薄機身中配備 6,500 mAh 電池 Vivo Y300 Pro 在 7.69 毫米纖薄機身中配備 6,500 mAh 電池 Sep 07, 2024 am 06:39 AM

Vivo Y300 Pro剛剛?cè)媪料?,它是最薄的中端Android手機之一,配備大電池。準確來說,這款智能手機的厚度僅為 7.69 毫米,但配備了 6,500 mAh 的電池。這與最近推出的容量相同

三星 Galaxy S24 FE 預(yù)計將以低于預(yù)期的價格推出,有四種顏色和兩種內(nèi)存選項 三星 Galaxy S24 FE 預(yù)計將以低于預(yù)期的價格推出,有四種顏色和兩種內(nèi)存選項 Sep 12, 2024 pm 09:21 PM

三星尚未就何時更新其 Fan Edition (FE) 智能手機系列提供任何提示。目前來看,Galaxy S23 FE 仍然是該公司的最新版本,于 2023 年 10 月年初推出。

新報告對傳聞中的三星 Galaxy S25、Galaxy S25 Plus 和 Galaxy S25 Ultra 相機升級進行了嚴厲的評估 新報告對傳聞中的三星 Galaxy S25、Galaxy S25 Plus 和 Galaxy S25 Ultra 相機升級進行了嚴厲的評估 Sep 12, 2024 pm 12:22 PM

最近幾天,Ice Universe 不斷披露有關(guān) Galaxy S25 Ultra 的詳細信息,人們普遍認為這款手機將是三星的下一款旗艦智能手機。除此之外,泄密者聲稱三星只計劃升級一款相機

iQOO Z9 Turbo Plus:可能增強的系列旗艦產(chǎn)品已開始預(yù)訂 iQOO Z9 Turbo Plus:可能增強的系列旗艦產(chǎn)品已開始預(yù)訂 Sep 10, 2024 am 06:45 AM

OnePlus的姐妹品牌iQOO的2023-4年產(chǎn)品周期可能即將結(jié)束;盡管如此,該品牌已宣布 Z9 系列的開發(fā)尚未結(jié)束。它的最終版,也可能是最高端的 Turbo+ 變體剛剛按照預(yù)測發(fā)布。時間

小米紅米 Note 14 Pro Plus 上市,成為首款配備 Light Hunter 800 攝像頭的高通 Snapdragon 7s Gen 3 智能手機 小米紅米 Note 14 Pro Plus 上市,成為首款配備 Light Hunter 800 攝像頭的高通 Snapdragon 7s Gen 3 智能手機 Sep 27, 2024 am 06:23 AM

Redmi Note 14 Pro Plus 現(xiàn)已正式成為去年 Redmi Note 13 Pro Plus 的直接后繼產(chǎn)品(亞馬遜售價 375 美元)。正如預(yù)期的那樣,Redmi Note 14 Pro Plus與Redmi Note 14和Redmi Note 14 Pro一起成為Redmi Note 14系列的主角。李

See all articles