新手区 executeShellCommand 获取当前 activity

lynnfang0917 · 2016年04月26日 · 2765 次阅读

在 uiautomator2.0 中想要获取当前运行的 activity 名称。查找了许多方法,后面发现靠谱的还是使用 adb shell 的 dumpsys 命令,具体如下:

dumpsys activity activities | grep mFocusedActivity

uiautomator2.0 中提供了 executeShellCommand 方法,前提是 api 在 21 以上,这个之前因为错误发帖咨询过。

问题:
ui_device.executeShellCommand("dumpsys activity activities | grep mFocusedActivity")
这个根本就不认管道 “|”,替换了好多字符等等都不行。
后面想直接运行:
ui_device.executeShellCommand("dumpsys activity activities")
并用 Log 输出结果看对不对,总发现少了一大截,一直以为是代码出现问题了,修改了多少次还是不行,后面才发现原来 logcat 是有长度限制的,我汗~~~

解决方法:
使用 ui_device.executeShellCommand("dumpsys activity activities") 得到返回值 stdout.toString() 后自己过滤得到 mFocusedActivity 就是当前的 activity
分享给大家~.~

共收到 6 条回复 时间 点赞

请使用 markdown

请问一下楼主,executeShellCommand("comm"),这个方法的返回值是怎么获取到的,顺便在请教一下,这个方法支持的命令是不是很有限。官网上的介绍也比较简单增的 executeShellCommand() 方法让您可以在仪器测试中执行 shell 命令。命令的执行方式与从已连接到设备的主机运行 adb shell 类似,允许您使用 dumpsys、am、content 和 pm 等基于 shell 的工具。

雨花石 回复

用 String 接收就可以了. 它返回的就是 string

7楼 已删除
匿名 #6 · 2018年11月28日

长度限制的问题,怎么解决的?

匿名 #7 · 2018年11月28日

哦 只是 logcat 输出有限制。 对于 string 没有限制?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册