使用Android辅助功能AccessibilityService实现微信自动聊天【外挂插件】

news2024/11/24 1:43:06

本文是使用Android辅助功能AccessibilityService实现微信自动聊天demo;

只是为了跟深入的了解Android辅助功能, 提高自身的动手能力。 请勿用于商用,或非法用途。

动手前,基本的准备要求:

聊天机器人app demo,去操作其他App,实现自动化操作,必须要懂的一些技术点;

1.熟练使用AccessibilityService、AccessibilityNodeInfo等一系列辅助类。

2.会使用uiautomatorviewer.bat 找控件id或text。

第一点,网上应该不少吧,你不懂可以去百度。或参考上一篇文章:Android辅助功能【Accessibility】入门简介及使用。

第二点,使用android sdk自带的uiautomatorviewer.bat, 位于%ANDROID_SDK_HOME%\tools\bin; 双击打开,如下图界面;

你可以从这里,获知很多有价值的东西:

比如APP包名,packageName;

当前某一个控件的ID,resource-id;

当前控件是否可点击,clickable;

当前控件是否可滑动,srollable;

此处举个例子:

既然,从这儿取到的控件id,那么如何在代码中如何通过资源id,请看如下代码:

public class AutoChatService extends AccessibilityService {
  
   //AccessibilityEvent是一个事件类,里面封装了许多字段,表示各种不同的事件(通知、窗口内容)
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        String packageName = event.getPackageName().toString();
        String className = event.getClassName().toString();
         LogUtils.i("event from:", packageName, className);

        AccessibilityNodeInfo root = this.getRootInActiveWindow();
        //先获取tabhost[微信,通讯录,发现,我], 微信的右上角是否有红色小圈,微信上的控件
        List<AccessibilityNodeInfo> wechatBadgeList = root.findAccessibilityNodeInfosByViewId("com.tencent.mm:id/j0_");
    }
}

要自动操作,必须要有自动操作权限

在xml文件中注册service

<service
    android:name=".AutoChatService"
    android:enabled="true"
    android:exported="true"
    android:label="@string/app_name"
    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/accessibility_service" />
</service>

在res 下新建xml包,建xml文件 accessibility_service。

<?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:description="@string/accessibility_description"
    android:notificationTimeout="3000"
    android:packageNames="com.tencent.mm,com.tencent.mobileqq"
    />

现在,我假设,你已经有足够的基础,做辅助功能操作了。就可以对接自动聊天api,例如:

  • 腾讯云 智能客服机器人 地址:https://cloud.tencent.com/solution/service
  • 图灵api接口(这个收费了,之前免费的),地址:http://www.turingapi.com/
  • 阿里云 智能客服机器人 地址:https://www.aliyun.com/product/beebot

本案例使用图灵api接口:

public class ChatRobot {

    public ChatRobot() {
    }

    public void feedWithTuringapi(String text, ChatRobot.ResponseHandler handler) {
        //异步调用聊天Api接口;
        AsyncHttpClient client = new AsyncHttpClient();

        RequestParams params = new RequestParams();
        params.put("key", "xxx");
        params.put("secret", "xxx");
        params.put("info", text);
        client.post("http://www.tuling123.com/openapi/api", params, new JsonHttpResponseHandler() {

            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                String text = null;
                try {
                    text = response.getString("text");
                } catch (Exception e) {}

                handler.onFeedBack(text);
            }

            public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                handler.onFeedBack(Emoj.getEmoji("调皮") + text + " <- my replay " + Emoj.getEmoji("微笑"));
            }
        });
    }

    public interface ResponseHandler {
        //机器人返回内容
        void onFeedBack(String msg);
    }
}

网络请求需要加网络权限昂

<uses-permission android:name="android.permission.INTERNET"/>

好了,你已经获取到聊天回复内容了。利用accesibilityNodeInfo的复制粘贴在微信app中自动回复消息吧。

项目微信自动聊天机器人截图

 

附上源码demo下载地址,https://download.csdn.net/download/cattong/87064455

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

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

相关文章

供应PEG试剂Azide-PEG-Acrylamide,N3-PEG-ACA,叠氮-聚乙二醇-丙烯酰胺

1、名称 英文&#xff1a;Azide-PEG-Acrylamide&#xff0c;N3-PEG-ACA 中文&#xff1a;叠氮-聚乙二醇-丙烯酰胺 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a; Acrylate/Acrylamide PEG Azide PEG 4、分子量&#xff1a;可定制&#xff0c;5k、2k、10k、20k、3.4k…

DarkNet网络结构

一、darknet53网络结构图 文字版&#xff1a;卷积(下采样卷积1残差块)(下采样卷积2残差块)(下采样卷积8残差块)(下采样卷积8残差块)(下采样卷积4*残差块) 不难看出&#xff0c;darknet53就是重复堆叠下采样卷积n*残差块(n为残差块的个数)这个结构而组成的。而更基本的结构就是…

数据库视图的基本操作(sql语句)

表视图的增删改查&#xff08;sql语句&#xff09; 概念&#xff1a;视图是一张虚拟表&#xff0c;它是从数据库的一张或多张表中导出的表&#xff0c;其内容由查询语句定义。 作用&#xff1a; 简单性、安全性、逻辑数据独立性&#xff1b;如果应用建立在视图上&#xff0c…

Node.js学习19~37(模块化)

1 模块化的基本概念 1.1 什么是模块化 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 编程领域中的模块化 编程领域中的模块化&#xff0c;就是遵守固定的规则&#xf…

【Pytorch with fastai】第 15 章 :深入探讨应用程序架构

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Docker概念基本介绍以及安装

目录 一、Docker概述 1.1Docker是什么 1.2Docker和虚拟机的区别 1.3使用场景 1.4 Docker 三要素&#xff08;核心组件&#xff09; 1.5六大名称空间 1.6 Docker引擎 1.7资源控制——cgroups 1.8容器特性 1.9 容器小的架构体系 二、Docker和虚拟化的区别 三、dock…

MATLAB循环类型

MATLAB 提供以下类型的循环处理循环的要求。点击链接&#xff0c;查看个循环类型的细节&#xff1a; 循环类型描述while 循环一个给定的条件为真时重复语句或语句组。测试条件才执行循环体。for 循环执行的语句序列多次缩写管理循环变量的代码。nested 循环可以使用一个或多个…

2022年深度学习最新研究成果

一、开源深度学习编译器 二、 开源深度学习加速器 三、AITemplate引擎 四、微型机器学习框架 参考文献&#xff1a;https://arxiv.org/pdf/1510.00149.pdf 五、Contrastive Learning 对比学习综述 六、Diffusion Model 扩散模型综述 Diffusion Models: A Comprehensive Surv…

【Python百日进阶-WEB开发】Day180 - Django案例:12用户登录

文章目录十、异步发送短信验证码 - 异步方案Celery10.1 生产者消费者设计模式10.2 Celery介绍10.3 Celery介绍和使用10.3.1十一、用户账号 登录11.1 用户登录11.1.1 用户登录逻辑分析11.1.2 用户登录接口设计和定义11.1.3 用户登录后端逻辑11.2 多账号登录11.2.1 自定义用户认证…

实战三:基于LGB实现车联网大数据碰撞识别 代码+数据(非常详细可作为毕设)

项目介绍&#xff1a; 使用的数据为采集车辆信号。车辆信息非常多&#xff0c;而且用户路况信息和使用偏好千人千面&#xff0c;很难找到一种准确识别碰撞的方法&#xff0c;希望参赛者通过车联网大数据识别车辆碰撞和碰撞时间。车辆标签信息如下&#xff1a; 车号LabelCollec…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.5 SpringBoot 整合 Redis

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.5 SpringBoot 整合 Redis4.5.1 环境准备4.5.2 使用…

多系统-单点登录测试

单点登录 文章目录单点登录单点登录 单点登录全程Single Sign On&#xff08;SSO&#xff09;,在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统&#xff0c;包括单点登录和单点注销两部分&#xff0c;是目前比较流行的企业业务整合的解决方案…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.1 内置数据源

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.1 内置数据源4.1.1 现有数据层解决方案4.1.2 小结…

波束形成,通过matlab仿真不同参数的波束形成以及旁絆级

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB代码预览 4.完整MATLAB程序 1.算法概述 波束成形技术&#xff08;Beam Forming&#xff0c;BF&#xff09;可分为自适应波束成形、固定波束和切换波束成形技术。固定波束即天线的方向图是固定的&#xff0c;把IS-95中的三个120…

同花顺_代码解析_技术指标_B

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 BBI BBIBOLL BETA BIAS BIASFS BOLL BOLLFS BTI BBI 多空指标 多空指标:(收盘价的M1日简单移动平均收盘价的M2日简单移动平均收盘价的M3日简单移动平均收盘价的M4日简单移动平均…

G蛋白偶联受体/激酶/离子通道——高通量筛选

GPCR Library &#xff08;含54,080 种化合物&#xff09;用于发现新的GPCR配体 G蛋白偶联受体 (GPCR)是新药研发人员关注的一类重要蛋白&#xff0c;三分之一FDA 批准药物靶向 GPCR。GPCR Library 涵盖了广泛的 GPCR 靶标&#xff0c;库中化合物具有新颖性和高度多样性的特…

C++不知算法系列之集结常规算法思想

1. 前言 数据结构和算法是程序的 2 大基础结构&#xff0c;如果说数据是程序的汽油&#xff0c;算法则就是程序的发动机。 什么是数据结构&#xff1f; 指数据之间的逻辑关系以及在计算机中的存储方式&#xff0c;数据的存储方式会影响到获取数据的便利性。 现实生活中&…

JVM和Java体系结构

前言 作为Java工程师的你曾被伤害过吗&#xff1f;你是否也遇到过这些问题&#xff1f; 运行着的线上系统突然卡死&#xff0c;系统无法访问&#xff0c;甚至直接OOMM&#xff01; 想解决线上JVM GC问题&#xff0c;但却无从下手。 新项目上线&#xff0c;对各种JVM参数设置…

【LeetCode】【简单】【4】70. 爬楼梯

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 动态规划 参考链接&#xff1a;动态规划详解 简单来说&#xff0c;动态规划其实就是&#xff0c;给定一个问题&#xff0c;我们把它拆成一个…

贯叶连翘及其天然产物的介绍

贯叶连翘 (Hyperlcurn perforatum L.) 为藤黄科 (Guttiferae) 植物&#xff0c;又名贯叶金丝桃&#xff0c;赶山鞭&#xff0c;小对叶草、千层楼等。迄今为止&#xff0c;已有众多的活性化合物从贯叶连翘中被分离出来。贯叶连翘中不同的成分具有多重药理活性&#xff0c;如其中…