在 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
分享给大家~.~


↙↙↙阅读原文可查看相关链接,并与作者交流