java - 如何在android上使用AccessibilityService获取屏幕上的View对象?

标签 java android android-studio kotlin accessibilityservice

我正在尝试创建一个 Android 应用程序,该应用程序提供辅助功能服务,当激活该服务时,它会捕获整个屏幕内容及其内部的 View 。 我查阅了很多 Android 文档,并了解到我可以获取包含大量有关屏幕内容的信息的 AccessibilityNodeInfo。 问题是我想拥有 View 本身。 AccessibilityNodeInfo 提供了 className、packageName、childs、parents、大量关于是否可聚焦、可检查的 boolean 值,甚至还提供了 View 的文本。我说,如果我可以读取 View 的文本,为什么我不知道它的宽度、高度、位置、字体等?

最佳答案

您可以使用AccessibilityNodeInfo.ExtraRenderingInfo获取 View 的 TextSize 或 LayoutSize(width,height)。这是在 API 30 中添加的。

AccessibilityNodeInfo mNodeInfo;

            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
            int height=mNodeInfo.getExtraRenderingInfo().getLayoutSize().getHeight();
        }

关于java - 如何在android上使用AccessibilityService获取屏幕上的View对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477112/

相关文章:

android - 在 ViewPager android 中处理 listview 的点击事件

Android Studio 设计时数据绑定(bind)回退/默认值

java - 如何从没有 api 的网站提取数据到 Android 应用程序中?

java - 如何在java中过滤特定目录并复制其余文件夹

java - 如何为我的图表创建 addge 函数。我需要将边添加到节点

android - setOnUtteranceProgressListener() 并不总是有效

android - Firebase 管理多个身份验证提供程序

android - 播放选定的音乐作为游戏的背景音乐

java - 关闭 Java HTTP 客户端

java - 检查HashMap中的键是否存在于句子中