首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

遍历 AccessibilityNodeInfo 报 StackOverflowError

在使用 AccessibilityService 遍历包含 WebView 的 AccessibilityNodeInfo 时会在某些情况下必现 StackOverflowError 的错误,导致应用崩溃...0x00 异常 最近使用 Android 的 AccessibilityService 做一些自动化操作时发现,在部分机器上遍历包含 WebView 页面的 AccessibilityNodeInfo...时,某些页面必定会引起 StackOverflowError 错误,经过一番查证,定位到主要与系统所使用的 Android System WebView 版本有关,属于 WebView 的 Bug。...相关说明可以参考 Android: Infinite loop of FrameLayouts in accessibility tree 的讨论。...; 一个是使用递归遍历 AccessibilityNodeInfo 时限制遍历的最大深度,这个深度根据情况大致在 40~70之间即可,既要基本保证能遍历完正常的 NodeTree 内的 Node,又要不引起

99331
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android:AccessibilityService辅助功能基础使用(附微信抢红包教程)

    辅助功能(AccessibilityService)是一个Android系统提供的一种服务,继承自Service类。..." android:enabled="true" android:exported="true" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE...> accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"...这里的配置有很多属性,我们只研究其中的6个: android:packageNames:指定辅助服务监听哪些应用发出事件,多个应用包名之间用逗号分隔,如果不填,则监听手机上所有应用。...searchPacket方法通过递归查找红包,当找到某个节点内容包含“领取红包”就终止递归,然后循环查找这个节点和它的父节点的第一个能够点击的节点,执行点击事件rootInActiveWindow.performAction

    6.2K20

    提高Android自动化测试稳定性的方法(三)

    小卡片,回复 “合集” 获取系统性的学习笔记和测试开发技能图谱 背景 在之前的一篇文章《移动端UI自动化过程中的难点及应对策略》中,我们提到在Android自动化测试执行过程中经常会遇到一些非预期的系统弹框...,我们可以通过无障碍服务来实现智能点击处理,但是通常这个服务只能手动到设置中开启,今天就跟大家分享一下如何实现一个自定义的无障碍服务以及如何自动化的开启它。...实现自定义的无障碍服务 自定义一个服务继承自AccessibilityService package com.android.jarvis.accessibility import android.accessibilityservice.AccessibilityService...import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityNodeInfo...="@xml/accessibility_service_config" /> 自动开启无障碍服务 可以通过执行下面的命令就可以自动开启指定的无障碍服务: adb

    56620

    Android辅助功能原理与基本使用详解-AccessibilityService

    辅助功能原理与基本使用详解 一、辅助功能基本原理   辅助功能(AccessibilityService)其实是一个Android系统提供给的一种服务,本身是继承Service类的。...二、辅助功能基本配置和框架搭建 创建自定义辅助功能服务类 import android.accessibilityservice.AccessibilityService; import android.view.accessibility.AccessibilityEvent...// 注册辅助功能服务 android:name=".AccessibilitySampleService" android:label="@string/accessibility_tip...> 上面android:label="@string/accessibility_tip"是配置此辅助功能服务在系统辅助功能页面里面显示的名字。...界面节点查找操作   AccessibilityNodeInfo提供两种查找View节点的方法 1.

    7K81

    仿360静默安装

    智能安装功能的实现原理要借助Android提供的无障碍服务,关于无障碍服务的详细讲解可参考官方文档:http://developer.android.com/guide/topics/ui/accessibility...accessibilityFeedbackType指定无障碍服务的反馈方式,实际上无障碍服务这个功能是Android提供给一些残疾人士使用的,比如说盲人不方便使用手机,就可以借助无障碍服务配合语音反馈来操作手机...> accessibility_service_description">智能安装服务,无需用户的任何操作就可以自动安装程序。...接下来就是调用iterateNodesAndHandle()方法来去解析当前界面的节点了,这里我们通过递归的方式将安装界面中所有的子节点全部进行遍历,当发现按钮节点的时候就进行判断,按钮上的文字是不是“...");           startActivity(localIntent);       }   }   当点击了开启智能安装服务按钮时,我们通过Intent跳转到系统的无障碍服务界面

    2.5K80

    Android静默安装实现方案,仿360手机助手秒装和智能安装功能

    智能安装功能的实现原理要借助Android提供的无障碍服务,关于无障碍服务的详细讲解可参考官方文档:http://developer.android.com/guide/topics/ui/accessibility...accessibilityFeedbackType指定无障碍服务的反馈方式,实际上无障碍服务这个功能是Android提供给一些残疾人士使用的,比如说盲人不方便使用手机,就可以借助无障碍服务配合语音反馈来操作手机...> accessibility_service_description">智能安装服务,无需用户的任何操作就可以自动安装程序。...接下来就是调用iterateNodesAndHandle()方法来去解析当前界面的节点了,这里我们通过递归的方式将安装界面中所有的子节点全部进行遍历,当发现按钮节点的时候就进行判断,按钮上的文字是不是“..."); startActivity(localIntent); } } 当点击了开启智能安装服务按钮时,我们通过Intent跳转到系统的无障碍服务界面,在这里启动智能安装服务。

    3.3K90

    会自动化不存在的

    > accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes...需要注意的是,由于界面元素 id 经常会变动,为了增加程序的可适配性,可以换一种方案:查找元素树中的第一个 EditText 元素。 接着,我们通过遍历拿到当前界面的所有节点元素。...; } return result; } 第 4 步,自动化写入内容 想要完全模拟人为输入,可以遍历上面拿到的内容,一个一个字符的输入。...第 5 步,编写界面 首次打开应用的时候,默认无障碍服务是关闭的,需要手动去开启一次。 开启服务之后,就可以使用朋友圈防折叠服务了。 ?...3 结 果 结 论 通过上面的 5 步操作,就完成了朋友圈的防折叠服务的开发。 平常使用的时候,只需要开启防折叠无障碍服务,复制任务文案,打开朋友圈的发布界面,服务会自动化完成输入。

    45430

    免Root实现Apk静默安装,覆盖兼容市场主流的98%的机型

    > accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes..." android:notificationTimeout="100" /> 三 用法 onServiceConnected() 服务连接时,也就是第一次打开时调用,这里我们可以初始化常量和标签等 onCreate...() 服务创建时调用,初始化一些数据 onDestroy() 服务消亡是,或者用户关闭时,调用,这里我们可以去做些业务相关的释放任务, onAccessibilityEvent() 监测到内容节点时调用...在遍历到需要的安装按钮调用api来实现自动点击功能,微信抢红包是监测微信红白的activity: aAccessibilityNodeInfo.performAction(targetAction) 关键部分...,“有安装”,有“下一步”,有“我知道了”,“有同意”,因此后期做兼容时废了很大力气,不仅需要判断机型还要判断rom版本,此项目中几乎覆盖了市场上主流机型,不兼容的请读者自我加入if语言判断,由于首次点击安装按钮时

    2.4K30

    为了保护小姐姐的眼睛,我用自动化做了一款语音机器人

    实现步骤 第 1 步,新建 Android 项目 使用 Android Studio 新建一个项目,并创建一个无障碍服务,设置只处理微信应用内的页面事件 //新建一个服务 public class MsgService...> accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:accessibilityEventTypes...通过分析,发现一篇文章的正文内容都包含在控件中 text 属性中,因此,我们只需要遍历出所有的控件,找出所有 text 属性不为空的内容。...需要注意的是,由于微信基于腾讯 X5 内核,内容包裹在 WebView 内部,直接获取控件是获取不到的,因此,需要在服务初始化的时候配置 flags 为增强 //新建一个服务 @Override protected...).show(); } 接着,先找到 WebView 控件,然后遍历子元素,找出所有子元素 text 不为空的内容 /*** * 获取所有的文本内容 * @param webNode *

    76940

    瞄准金融行业的远控木马:SpyNote

    Android 间谍软件是最常见的恶意软件之一,攻击者通过 Android 间谍软件来跟踪用户位置、检查 Web 浏览记录,甚至窃取敏感信息(密码和信用卡号等),其对银行机构与客户构成的威胁与 Android...借助无障碍服务,无需任何用户输入,SpyNote 就可以点击“安装”和“更新”按钮: if("android.widget.Button".equals(accessibilityNodeInfo0.getClassName....getSource(), "android.view.ViewGroup").iterator();AccessibilityNodeInfo accessibilityNodeInfo1 = accessibilityNodeInfo0...收到攻击者的命令后,攻击者的 C&C 服务器会收到从网页获取的凭据和信息。...结论 SpyNote 将继续使用 Accessibility Service 从用户设备收集基本数据,并且能够朝着更便利分发的方向发展。

    1.8K30

    Android Accessibility 安全性研究报告

    Accessibility特性和服务帮助用户更好地使用Android设备。...图1.1Accessibility官方简介 二、 运行原理 Accessibility[2]相关服务以及接口在Android 1.6时期就已经被加入,其中以AccessibilityService组件作为入口...,结合AccessibilityEvent,AccessibilityNodeInfo等关键类完成辅助功能(其中AccessibilityNodeInfo于Android 4.0加入)。...AccessibilityService是继承了Service的抽象类,生命周期不由应用本身管理,而是由系统和用户的显式操作所控制,运行后当有AccessibilityEvent被发出时该服务会收到系统的回调...2)用户对Accessibility的认识不足 如果说起ROOT,相信能引起用户的谨慎注意,但是设计到Accessibility,包括无障碍服务、辅助功能等词语时,大多用户没有足够的安全防护意识,甚至由于服务置于后台

    1.8K80

    手把手教你使用Android原生写一个订票机器人

    整个交互的过程如下图所示: 核心的原理部分 要实现一个自动化订票机器人服务,需要借助于Android上的 无障碍服务 ,无障碍服务是一种应用,可提供界面增强功能,来协助残障用户或可能暂时无法与设备进行全面互动的用户完成操作...(例如,当用户禁用无障碍服务时) } } step3.在AndroidManifest.xml文件中补充一下服务的描述,这个需要放在application 的下面,这一步骤的主要作用是注册我们这个服务...android:resource="@xml/accessibility_service_config" /> step4.新增上面Android描述文件引用的资源文件...> accessibility-service xmlns:android="android.com/apk/res/android>" android:accessibilityEventTypes...然后嘿嘿,曾经火爆一时的抢红包插件,你想到应该怎么去实现了吗?

    45940

    干货 | Trip.com 智能自动化探索测试

    作者简介 祥星,携程Android开发工程师,对Android自动化测试有深入的研究。 ? 一、简介 快速的业务迭代要求快速的App发版节奏,随之而来的是质量保障压力的增大。...下面举例如何通过AccessibilityNodeInfo获取当前页面所有点击元素: // 递归获取当前节点所有可点击的子节点 public static void getCurrentAllClickViews...机票、酒店和火车又有自的跳转页面,这一过程一直持续,直到页面无事件为止。 研究App的遍历问题本质上就转化成研究图的遍历问题,因此我们借鉴图的深度遍历算法制定探索策略。...pb是 press back的缩写。 3.2 算法 ? 算法的整体思想是采用递归的方式不断地在新状态下执行探索,直到探索完成。...由IAET基础服务和探索驱动两大模块组成。 基础服务模块 基础服务模块在保证保证探索正常运行的基础上,承担UI驱动的能力,主要由UI驱动和异常监控系统两部分组成。

    1.4K20
    领券