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

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

本篇文章继续讲述辅助功能实现抢红包的方案.

上篇文章主要讲了下辅助功能的基本使用,本文涉及的一些基础内容就不再赘述了.

有疑问的可以查看上篇文章:

Android 辅助功能 -抢红包

1: 添加微信监听

修改xml文件,android:packageNames中新增微信监听.

<?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,com.tencent.mm">
</accessibility-service>

2: 监听通知栏消息

public class RedPacketAccessibilityService extends AccessibilityService {private static final String TAG = "RedPacketAccessibilityService";@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);}}}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("[微信红包]")) {Parcelable parcelableData = event.getParcelableData();if (parcelableData != null && parcelableData instanceof Notification) {PendingIntent contentIntent = ((Notification) parcelableData).contentIntent;new Handler().postDelayed(() -> {try {contentIntent.send();} catch (PendingIntent.CanceledException e) {Log.e(TAG, "onAccessibilityEvent: ", e);}},1000);}}}break;}}@Overridepublic void onInterrupt() {}
}

3: 测试

2024-03-15 12:58:49.361 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: com.tencent.mm
2024-03-15 12:58:49.386 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: notification ->夏沫: [微信红包] 恭喜发财,大吉大利
2024-03-15 12:58:50.716 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: 0
2024-03-15 12:58:50.716 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: com.tencent.mm
2024-03-15 12:58:50.874 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: 0
2024-03-15 12:58:50.874 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: com.tencent.mm
2024-03-15 12:58:50.903 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: 0

如上述日志输出,监听通知栏消息后,延迟1s 跳转到了聊天界面.

2024-03-15 12:59:04.633 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: 0
2024-03-15 12:59:04.633 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: com.tencent.mm
2024-03-15 12:59:04.640 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: notification ->夏沫请求添加你为朋友
2024-03-15 12:59:05.809 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: 0
2024-03-15 12:59:05.809 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: com.tencent.mm
2024-03-15 12:59:05.831 10332-10332/com.test.redpacket I/RedPacketAccessibilityService: onAccessibilityEvent: 0

如上述输出,监听通知栏添加好友消息,延迟1s跳转到了新的朋友界面.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【解读】区块链和分布式记账技术标准体系建设指南

大家好&#xff0c;这里是苏泽。一个从业Java后端的区块链技术爱好者。 今天带大家来解读这份三部门印发的行业建设指南《区块链和分布式记账技术标准体系建设指南》 原文件可查看P020240112840724196854.pdf (www.gov.cn) 以下是个人解读&#xff0c;如有纰漏请指正&#xff…

Nginx 报错 504 Gateway Time-out 的解决方法

报错信息 504 Gateway Time-out 原因是程序执行时间过长&#xff0c;导致请求超时。 解决方法 首先&#xff0c;尽可能地优化程序代码的执行时间。 其次&#xff0c;修改配置文件。 修改 php.ini 配置文件。 max_execution_time 600 复制 修改 nginx.conf 配置文件。…

KY9 成绩排序

描述&#xff1a; 用一维数组存储学号和成绩&#xff0c;然后&#xff0c;按成绩排序输出。 输入描述&#xff1a; 输入第一行包括一个整数N(1<N<100)&#xff0c;代表学生的个数。 接下来的N行每行包括两个整数p和q&#xff0c;分别代表每个学生的学号和成绩。 输出描述…

【系统架构师】-第16章-嵌入式系统架构设计理论与实践

1、嵌入式系统发展 第一阶段&#xff1a;单片微型计算机 (SCM) 阶段&#xff0c;即单片机时代&#xff0c;五操作系统 第二阶段&#xff1a;微控制器 (MUC) 阶段&#xff0c;有简单操作系统 第三阶段&#xff1a;片上系统 (SoC)&#xff0c;兼容各种微处理器 第四阶段&…

常见滤波方式的区别的优势

一. 限幅滤波法 给定一个最大偏差X&#xff0c;如果本次值与上次差值小于X&#xff0c;则本次有效&#xff0c;否则无效&#xff0c;使用上次值代替。 #incldue <stdio.h>#define X 2 int lastvalue; //限幅滤波法 int filter(void) {int nowValue ;nowValue getValue…

软件测试 —— 测试用例设计报告

写出测试网站的测试用例&#xff0c;测试网站具体内容可看团购网站系统需求说明书1.2.doc 一、流程1&#xff1a;注册→登录 图1&#xff1a;注册->登录流程图 1、 使用场景设计法设计测试用例 1&#xff09; 找出基本流和备选流 基本流注册用户-成功登录系统备选流1注册…

Jenkins cron定时构建触发器

from&#xff1a; https://www.jenkins.io/doc/book/pipeline/syntax/#cron-syntax 以下内容为根据Jenkins官方文档cron表达式部分翻译过来&#xff0c;使用机翻加个人理解补充内容&#xff0c;包括举例。 目录 介绍举例&#xff1a;设置方法方法一&#xff1a;方法二&#xf…

3.2_1 虚拟内存的基本概念

3.2_1 虚拟内存的基本概念 虚拟存储技术也是存储空间扩充的一种技术&#xff0c;它比交换、覆盖技术要更先进一些。 &#xff08;一&#xff09;传统存储管理方式的特征、缺点 对于这种传统的存储管理方案&#xff0c;很多暂时用不到的数据也会长期占用内存&#xff0c;导致内存…

R 语言patchwork包拼图间隙

在R语言中&#xff0c;patchwork包是一个非常强大的工具&#xff0c;允许你轻松地将多个图表拼接在一起。如果你希望调整拼图间的间隙&#xff08;即图表之间的空白区域&#xff09;&#xff0c;可以通过使用plot_layout()函数来实现&#xff0c;其中可以指定guides参数和spaci…

【数据结构和算法初阶(C语言)】栈的概念和实现(后进先出---后来者居上的神奇线性结构带来的惊喜体验)

目录 1.栈 1.1栈的概念及结构 2.栈的实现 3.栈结构对数据的处理方式 3.1对栈进行初始化 3.2 从栈顶添加元素 3.3 打印栈元素 3.4移除栈顶元素 3.5获取栈顶元素 3.6获取栈中的有效个数 3.7 判断链表是否为空 3.9 销毁栈空间 4.结语及整个源码 1.栈 1.1栈的概念及结构 栈&am…

Codeforces Round 933 (Div. 3)

比赛地址传送门 A. Rudolf and the Ticket 题目大意&#xff1a; 给定两个数组和一个 k&#xff0c;要求从两个数组中各选一个数求和不大于 k&#xff0c;有多少种方案 思路&#xff1a; 维护一个数组 f[i] 代表小于等于 i 的数字的数量&#xff0c;遍历另一个数组&#xff0…

遇到:java.lang.reflect.InaccessibleObjectException: Unable to make错误应该如何解决

遇到 "java.lang.reflect.InaccessibleObjectException: Unable to make" 错误是因为你的代码尝试访问了一个不可访问的对象或方法。这通常会发生在使用反射机制时&#xff0c;尝试访问私有或受限制的成员时。要解决这个问题&#xff0c;你可以考虑以下几个步骤&…

高压辊磨机(辊压机)在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段

高压辊磨机&#xff08;辊压机&#xff09;在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段 高压辊磨机又称为辊压机、挤压磨&#xff0c;是基于料层粉碎原理设计的一种干式辊磨设备。高压辊磨机结构形式多样&#xff0c;但原理基本相似&#xff0c;主要由机架、高压工…

浅谈C++绑定器bind1st、bind2nd和函数对象function

今天我们先来谈谈C 标准库里面的绑定器bind1st&#xff0c;bind2nd 和函数对象function C 绑定器和函数对象 一、绑定器二、函数对象 一、绑定器 虽然在C11标准中这两个绑定函数已经被弃用&#xff0c;但仍然值得我们深入思考其底层原理。从字面上理解&#xff0c;“绑定” 这…

【3】文件读写

Python 读取文件的三种常见方法 使用open()函数打开文件&#xff0c;并使用read()方法读取文件的内容。例如&#xff1a; file open("filename.txt", "r") content file.read() file.close()使用with语句打开文件&#xff0c;并使用readlines()方法读取…

Explain

Explain EXPLAIN是MySQL提供的一种用于分析SQL查询执行计划的工具&#xff0c;通过它我们可以深入了解数据库如何执行一条SQL语句&#xff0c;以及优化器在选择索引、访问表和排序数据等方面的决策。 我整理了一份思维导图方便更好查看各个参数的意义&#xff0c;红色表示比较…

RabbitMq踩坑记录

1、连接报错&#xff1a;Broker not available; cannot force queue declarations during start: java.io.IOException 2.1、原因&#xff1a;端口不对 2.2、解决方案&#xff1a; 检查你的连接配置&#xff0c;很可能是你的yml里面的端口配置的是15672&#xff0c;更改为5672即…

css超出部分显示省略号

目录 前言 一、CSS单行实现 二、CSS多行实现&#xff08;CSS3出的&#xff0c;兼容性需要注意&#xff09; 三、微信小程序超过2行出现省略号实现 四、JavaScript脚本实现 前言 CSS文本溢出就显示省略号&#xff0c;就是在样式中指定了盒子的宽度与高度,有可能出现某些内…

LLM - 大语言模型(LLM) 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/136617643 大语言模型(LLM, Large Language Model)的发展和应用是一个非常广泛的领域&#xff0c;涉及从早期的统计模型到现代基于深度学…

【AI+CAD】(二)LLM和VLM生成结构化数据结构(PPT/CAD/DXF)

当前LLM和VLM在PPT生成任务上已经小有成效,如ChatPPT。 @TOC 1. PPT-LLM LLM根据用户的instruction生成规范的绘制ppt的API语句:即使是最强的GPT-4 + CoT也只能达到20-30%的内容准确度。 LLM输入:User_instruction(当前+过去)、PPT_content、PPT_reader_API。其中 PPT_rea…