我正在尝试归档与“hierarchyviewer”工具相同的内容,该工具会在设备或模拟器屏幕上的任何给定时刻转储视图树。
但我希望它是在Android设备上运行的应用程序。此应用程序将在后台运行,如Serve,并将当前显示的视图转储到文本文件中。
有可能吗?有没有可用的代码示例?
答案 0 :(得分:3)
有可能吗?
没有
您最接近的是实施AccessibilityService
。这将更加接近 uiautomatorviewer
功能,为您提供在层次结构视图中看到的内容的子集。这还需要用户进行双重选择:用户必须在辅助功能区域的“设置”中安装您的应用并将其激活。
答案 1 :(得分:1)
据我所知,如果他们没有明确地通过使用Intents(或者如果您拥有这些其他应用程序)与您分享该信息,则无法访问其他应用程序。
所以,基于这个限制,我的赌注是你不能通过常规方式访问另一个应用程序的View Tree。如果你胆怯,我认为你不应该,因为这对其他应用程序来说是“秘密”,而且你将在未经许可的情况下注册信息。事实上,hierarchyview
使用的是一些直接使用Android内部私有库的技巧。就像截取屏幕截图一样,你不能使用“默认”实现,而是使用这些测试工具。
话虽如此,请检查this answer,其中显示如何将当前应用程序置于前台。从这里开始,获取视图树应该是不可能的,但只要您可以在该应用的当前活动this could be done上调用getWindow()
。