AccessibilityService 手机联通营业厅自动签到器

2024-02-09 20:32

本文主要是介绍AccessibilityService 手机联通营业厅自动签到器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.手机联通营业厅自动签到器

ui界面

2. Demo下载

https://github.com/sufadi/AccessibilityServiceMonitor

3. 实现思路

3.1 打开联通界面
    public static void startLiangTongUI(Context mContext) {Intent intent = new Intent();intent.setPackage("com.sinovatech.unicom.ui");intent.setClassName("com.sinovatech.unicom.ui", "com.sinovatech.unicom.basic.ui.MainActivity");mContext.startActivity(intent);}

3.2 点击主界面的联通界面的签到按钮

主界面的签到按钮

实现思路,根据resource id 进行控件的点选,即findAccessibilityNodeInfosByViewId

    /*** 跳转到签到界面* @param nodeInfo* @param packageName* @param className*/public static void startLiangTongQianDaoUI(AccessibilityNodeInfo nodeInfo, String packageName, String className) {if (nodeInfo == null) {return;}CommonUtil.clickBtnByResId(nodeInfo, "com.sinovatech.unicom.ui:id/home_header_long_qiandao_image");}public static void clickBtnByResId(AccessibilityNodeInfo nodeInfo, String id) {if (nodeInfo != null) {// 该界面下所有 ViewId 节点List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId(id);for (AccessibilityNodeInfo item : list) {if (item.isClickable()) {item.performAction(AccessibilityNodeInfo.ACTION_CLICK);Log.d(Config.TAG, "clickBtnByResId = " + item.toString());break;}}}}

3.3 点击WebView的联通界面的签到按钮

webview签到按钮

这里的思路是先找到 “android.webkit.WebView”,然后在 webView 中进一步找到签到按钮,对应上面图示。

    /*** 点击自动签到** @param nodeInfo* @param packageName* @param className*/public static void policy(AccessibilityNodeInfo nodeInfo, String packageName, String className) {if (nodeInfo == null) {return;}if ("com.sinovatech.unicom.ui".equals(packageName)) {for (int i = 0; i < nodeInfo.getChildCount(); i++) {AccessibilityNodeInfo child = nodeInfo.getChild(i);if ("android.webkit.WebView".equals(child.getClassName())) {Log.d(Config.TAG, "nodeInfo = " + nodeInfo.toString());findEveryViewNode(child);break;}}}}public static void findEveryViewNode(AccessibilityNodeInfo node) {if (null != node && node.getChildCount() > 0) {for (int i = 0; i < node.getChildCount(); i++) {AccessibilityNodeInfo child =  node.getChild(i);// 有时 child 为空if (child == null) {continue;}String className = child.getViewIdResourceName();if ("qd_xq".equals(className)) {Log.d(Config.TAG, "Button 的节点数据 text = " + child.getText() + ", descript = " + child.getContentDescription() + ", className = " + child.getClassName() + ", resId = " + child.getViewIdResourceName());boolean isClickable = child.isClickable();if ( isClickable) {child.performAction(AccessibilityNodeInfo.ACTION_CLICK);Log.d(Config.TAG, "联通签到 成功点击");}}// 递归调用findEveryViewNode(child);}}}

具体日子打印如下

2018-08-28 17:25:04.541 28655-28655/? D/suhuazhi: Button 的节点数据 text = , descript = null, className = android.view.View, resId = qd_xq
2018-08-28 17:25:04.543 28655-28655/? D/suhuazhi: 联通签到 成功点击

这篇关于AccessibilityService 手机联通营业厅自动签到器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de