禁用新鲜android emulator上的首次运行问候器

禁用新鲜android emulator上的首次运行问候器,android,android-uiautomator,Android,Android Uiautomator,我正在编写一个测试,它要求直接从启动器启动应用程序。因为我无法通过intent正确地模拟它 问题是,当我在一个新的模拟器上运行测试时(我使用的是Travis CI,但它可以很容易地在我的家用电脑上复制),模拟器从“第一次运行”的迎宾覆盖开始。这会阻止uiautomator代码正确启动应用程序 我曾尝试添加一些代码来关闭迎宾台,但不幸的是,当我的“迎宾台检测和关闭”代码在认为海岸安全的情况下已经停止工作时,它可能会出现一些延迟 有没有什么方法可以保证禁用迎宾员?某些偏好可能是或只是可靠地杀死迎宾员

我正在编写一个测试,它要求直接从启动器启动应用程序。因为我无法通过intent正确地模拟它

问题是,当我在一个新的模拟器上运行测试时(我使用的是Travis CI,但它可以很容易地在我的家用电脑上复制),模拟器从“第一次运行”的迎宾覆盖开始。这会阻止uiautomator代码正确启动应用程序

我曾尝试添加一些代码来关闭迎宾台,但不幸的是,当我的“迎宾台检测和关闭”代码在认为海岸安全的情况下已经停止工作时,它可能会出现一些延迟

有没有什么方法可以保证禁用迎宾员?某些偏好可能是或只是可靠地杀死迎宾员的代码示例。

您是否尝试过使用?这将允许您发送启动器用于启动应用程序的相同意图。这应该相当于单击应用程序的启动程序图标


如果您确实需要通过启动程序,您可以使用关闭第一次运行覆盖。每当UiAutomator找不到元素时,它将为每个注册的UiWatcher调用该方法,并让您有机会排除任何阻碍的覆盖或对话框。

显然,问候者被称为“粘住”。通过搜索(相当旧的)代码,我发现了以下内容:

下一站是
isrunningtestharness()
at


这反过来会导致adb外壳setprop ro.test\u线束为真。这很有效。

我的应用程序目前有两个不同的图标可以启动。我找不到一个方法来选择正确的。另一方面,UiWatcher看起来很有前途。
private boolean isClingsEnabled() {
    // TEMPORARY: DISABLE CLINGS ON LARGE UI
    if (LauncherApplication.isScreenLarge()) return false;
    // disable clings when running in a test harness
    if(ActivityManager.isRunningInTestHarness()) return false;
    return true;
}
public static boolean isRunningInTestHarness() {
    return SystemProperties.getBoolean("ro.test_harness", false);
}