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

相关文章

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

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

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

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

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

基于Java和FFmpeg实现视频压缩和剪辑功能

《基于Java和FFmpeg实现视频压缩和剪辑功能》在视频处理开发中,压缩和剪辑是常见的需求,本文将介绍如何使用Java结合FFmpeg实现视频压缩和剪辑功能,同时去除数据库操作,仅专注于视频处理,需... 目录引言1. 环境准备1.1 项目依赖1.2 安装 FFmpeg2. 视频压缩功能实现2.1 主要功