android - 无法检查三星 J5 上的对象 com.android.incallui.service.SecCallPopupService
问题描述
我有一个我认为与 Android 权限有关的问题,但是我需要您的一些专业知识来确认它。
我在一些呼叫处理场景中测试了旧的 Samgung J5(未植根)和 Android 8.1.0、Appium 1.10.0 和 UiAutomator2 和 ADB 10.0.40(在管理模式下),在这些场景中我需要检查是否确定显示元素(身份、通话时长、保持激活、转接信息等)显示给用户。我已经看到了多种解决方案来完成这项任务,包括使用 adb 来完成,但我们只关注这个问题,只使用显示元素 (GUI)。
场景,用户接听电话。
com.android.incallui.service.SecCallPopupService 开始行动:
当我尝试检查 com.android.incallui.service.SecCallPopupService 窗口时,Appium 找不到它:
在 UiAutomatorViewer 上都没有:
在评论链接(xml 转储)上,您可以看到 Appium 和 UiAutomatorViewer 可以“看到”的显示元素。使用命令 adb shell uiautomator dump /data/local/tmp/uidump.xml 获得了相同的结果
之后,我安装了 Appium Studio 并试用了 Appium 官方的“Inspector”,结果是:
Appium Studio Object Spy具有对所有显示元素的完全访问权限。非常有趣...经过一些研究后,我发现当我单击 Object Spy 功能时,设备上立即安装了以下包 com.expitest.uiautomator.test(在后台运行),我认为它负责检索所有界面元素.
在评论链接 (logcat) 在 Appium Studio 上 doind object spy 之后的一些 logcat 日志:
分析 logcat 我们可以看到 Appium studios 正在请求
{"response":"true","params":[],"command":"richDump"} 并且包使用某种 node:android.view.accessibility。可访问性节点。也许使用诸如“可访问性树”节点之类的东西来获取元素 ?我不知道...
我在 Stackoverflow 上阅读了一些类似的问题,但一些解决方案涉及 root 设备或使用 de ADB(它不是一个选项), 尝试 su root 设备和 chmod 777 /data/local/tmp,但如果真的有必要,如何那么 Appium Studio 可以读取所有显示元素吗?
您是否知道任何其他解决方案可以让我在没有 root 设备的情况下获取所有界面元素?我怎么称呼“richDump”?
谢谢你的帮助。
解决方案
推荐阅读
- c - 使用结构内部的 int 变量初始化静态数组
- c - 使用 Plecs 的 C 语言状态机
- c# - 避免 .NET Core 中的 n 层架构中的循环依赖
- google-bigquery - 如何从具有计数的表中部分过滤子字符串
- flutter - 手动设置下拉按钮的值
- django - 在 Django 中使用复选框和查询数据库
- python - Python 字符串相似度(具有复杂性)
- r - 如何在 R 中的列表列表中识别和计算每个级别的唯一对?
- android - Android Release 版本有一个错误不在调试中
- mongodb - Atlas集群-mongoimport“失败:连接到数据库服务器时出错:没有可访问的服务器”