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

相关文章

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s