Android 辅助功能 -抢红包(三)

2024-03-15 18:28

本文主要是介绍Android 辅助功能 -抢红包(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android 辅助功能 -抢红包(三)

本篇文章继续讲述辅助功能.

主要通过监听通知栏红包消息,来跳转聊天页面,并自动回复对方"谢谢".

上篇文章我们讲述了监听notification, 跳转聊天界面. 具体可查看:

Android 辅助功能 -抢红包(二)

1: 使用monitor抓取id.

file

打开android device monitor 获取resouce-id 备用.

2: 设置聊天框文本

通过步骤1获取到的resouce-id来获取AccessibilityNodeInfo.

List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bkk");

找到edit结点后, 设置edit文本内容,具体方法为performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, Bundle).

Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "谢谢");
accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);

3: 点击发送

List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bql");
for (AccessibilityNodeInfo accessibilityNodeInfo : accessibilityNodeInfosByViewId) {accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);step = 0;
}

仍然通过findAccessibilityNodeInfosByViewId找到发送按钮的结点, 调用AccessibilityNodeInfo.ACTION_CLICK 发送文本.

完整的代码如下:

public class RedPacketAccessibilityService extends AccessibilityService {private static final String TAG = "RedPacketAccessibilityService";private int step = 0;@SuppressLint("LongLogTag")@Overridepublic 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("红包:恭喜发财");
//            if (nodeInfos != null) {
//                for (AccessibilityNodeInfo nodeInfo : nodeInfos) {
//                    nodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);
//                }
//            }if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {//第二步骤: 设置文本edit内容if (step == 1) {List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bkk");if (accessibilityNodeInfosByViewId != null) {Log.i(TAG, "onAccessibilityEvent: 查找edit");for (AccessibilityNodeInfo accessibilityNodeInfo : accessibilityNodeInfosByViewId) {Bundle arguments = new Bundle();arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, "谢谢");accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);step = 2;}}}}}Log.i(TAG, "onAccessibilityEvent: step =" + step);//点击发送按钮,发送谢谢if (step == 2) {if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) {List<AccessibilityNodeInfo> accessibilityNodeInfosByViewId = rootInActiveWindow.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/bql");for (AccessibilityNodeInfo accessibilityNodeInfo : accessibilityNodeInfosByViewId) {accessibilityNodeInfo.performAction(AccessibilityNodeInfo.ACTION_CLICK);step = 0;}}}switch (event.getEventType()) {case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:List<CharSequence> text = event.getText();for (CharSequence charSequence : text) {Log.i(TAG, "onAccessibilityEvent: notification ->" + charSequence);
//                    if (charSequence.toString().contains("请求添加") ||
//                            charSequence.toString().contains("[微信红包]"))if (charSequence.toString().contains("[微信红包]")) {step = 0; //重置Parcelable parcelableData = event.getParcelableData();if (parcelableData != null && parcelableData instanceof Notification) {PendingIntent contentIntent = ((Notification) parcelableData).contentIntent;new Handler().postDelayed(() -> {try {//第一步:跳转聊天界面contentIntent.send();step = 1;} catch (PendingIntent.CanceledException e) {Log.e(TAG, "onAccessibilityEvent: ", e);}}, 1000);}}}break;case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:List<CharSequence> text1 = event.getText();for (CharSequence charSequence : text1) {Log.i(TAG, "onAccessibilityEvent: TYPE_VIEW_TEXT_CHANGED ->" + charSequence);}break;case AccessibilityEvent.TYPE_VIEW_CLICKED:List<CharSequence> text2 = event.getText();for (CharSequence charSequence : text2) {Log.i(TAG, "onAccessibilityEvent: TYPE_VIEW_CLICKED ->" + charSequence);}break;}}@Overridepublic void onInterrupt() {}
}

这篇关于Android 辅助功能 -抢红包(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812862

相关文章

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

Android使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

SpringBoot+Vue3整合SSE实现实时消息推送功能

《SpringBoot+Vue3整合SSE实现实时消息推送功能》在日常开发中,我们经常需要实现实时消息推送的功能,这篇文章将基于SpringBoot和Vue3来简单实现一个入门级的例子,下面小编就和大... 目录前言先大概介绍下SSE后端实现(SpringBoot)前端实现(vue3)1. 数据类型定义2.

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

Python实现繁体转简体功能的三种方案

《Python实现繁体转简体功能的三种方案》在中文信息处理中,繁体字与简体字的转换是一个常见需求,无论是处理港澳台地区的文本数据,还是开发面向不同中文用户群体的应用,繁简转换都是不可或缺的功能,本文将... 目录前言为什么需要繁简转换?python实现方案方案一:使用opencc库方案二:使用zhconv库

Qt实现删除布局与布局切换功能

《Qt实现删除布局与布局切换功能》在Qt应用开发中,动态管理布局是一个常见需求,比如根据用户操作动态删除某个布局,或在不同布局间进行切换,本文将详细介绍如何实现这些功能,并通过完整示例展示具体操作,需... 目录一、Qt动态删除布局1. 布局删除的注意事项2. 动态删除布局的实现步骤示例:删除vboxLay

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②