首页 > 解决方案 > 无法检查三星 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 找不到它:

Appium检查员

在 UiAutomatorViewer 上都没有:

UitAutomatorViewer

在评论链接(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”?

谢谢你的帮助。

标签: androidadbappiumandroid-uiautomatorin-call

解决方案


推荐阅读