【问题标题】:Android 6.0.1 uiautomator SyncException: Remote object doesn't exist! during incall screenAndroid 6.0.1 uiautomator SyncException:远程对象不存在!在通话屏幕期间
【发布时间】:2017-01-09 08:17:49
【问题描述】:
目标:我想在 android 6.0.1 设备中使用 android uiautomator 自动化呼叫相关场景。但无法在调用屏幕中获取 UI 层次结构(静音、Spearker On、键盘、Addcall 等)
注意:我没有使用任何appium服务器
错误:“获取 UI 层次结构时出错”原因:获取 UI 时出错
层次结构 XML 文件:com.android.ddmlib.SyncException:远程对象
不存在!
观察:
- adb devices 正在列出设备,我们可以访问 /data/local/tmp/ 目录
- 重启设备,重启电脑,重启uiautomatorviewer
-
adb shell input tap x y 正在工作(但不想在脚本文件中使用坐标)
请协助寻找解决方案,以自动执行电话应用程序调用场景,例如“静音”、“取消静音”、“dtmf 按键盘数字”、“扬声器打开”、“扬声器关闭”。
有没有办法通过 adb 来执行这些操作?
【问题讨论】:
标签:
android
adb
android-uiautomator
uiautomatorviewer
【解决方案1】:
您可以简单地调用 adb 命令来调用调用者服务。
要从 ADB 拨打(而不是呼叫)号码,请运行以下 ADB shell 命令:
$ adb shell service call phone 1 s16 "9302939203"
Result: Parcel(00000000 '....')
要从 ADB 调用,我们只需要更改调用服务命令的方式:
$ adb shell service call phone 2 s16 "1" s16 "9302939203"
Result: Parcel(00000000 '....')
还有一个替代命令可以从 ADB 拨打电话:
$ adb shell am start -a android.intent.action.CALL -d tel:9302939203
Starting: Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxx }