我正在编写一个测试,要求直接从启动器启动应用程序。因为我无法通过意图启动来正确模拟它。
问题是,当我在新的仿真器上运行测试时(我正在使用Travis CI,但可以在家用PC上轻松复制),该仿真器从“首次运行”迎宾器覆盖层开始。这阻止了我的uiautomator代码正确启动应用程序。
我试图添加一些代码以关闭该问候器,但是不幸的是,当我的“问候器检测和关闭”代码已经停止工作并认为海岸很清楚时,它可能会延迟出现。
有什么保证方法可以禁用该迎宾员吗?某些偏爱也许或者仅仅是可以可靠地杀死问候者的代码示例。
最佳答案
您是否尝试过使用PackageManager.getLaunchIntentForPackage(..)?这将允许您发送启动程序用来启动应用程序的相同Intent。它应该等效于单击应用程序的启动器图标。
如果确实需要通过启动器,则可以使用UiWatcher退出首次运行叠加层。每当UiAutomator找不到元素时,它都会为每个已注册的UiWatcher调用checkForCondition(..)方法,并为您提供消除任何阻碍方式的叠加层或对话框的机会。