gpt4 book ai didi

android - 强制检测 Activity 以多窗口模式运行

转载 作者:太空狗 更新时间:2023-10-29 16:29:13 31 4
gpt4 key购买 nike

如你所知,android提供了Multi-Window support mode在 android N 中。我们的应用程序支持多窗口。
但是如何测试呢?如何在该模式下强制测试运行应用程序?我没有在 Instrumentation 类或文档中的其他任何地方创建任何此类方法。或许 Espresso 在某种程度上是可能的?

最佳答案

不幸的是provided by azizbekian需要一个以前在多窗口模式下加载的应用程序,所以我想提供自己的解决方案。在 answer我找到了如何以编程方式进入多窗口模式。我使用它构建了完整的解决方案:

    UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
//enter multi-window mode
uiAutomation.performGlobalAction(AccessibilityService.GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN);
//wait for completion, unfortunately waitForIdle doesn't applicable here
Thread.sleep(1000);
//simulate selection of our activity
MotionEvent motionDown = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), KeyEvent.ACTION_DOWN,
150, 200, 0);
motionDown.setSource(InputDevice.SOURCE_TOUCHSCREEN);
uiAutomation.injectInputEvent(motionDown, true);
motionDown.recycle();
MotionEvent motionUp = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), KeyEvent.ACTION_UP,
150, 200, 0);
motionUp.setSource(InputDevice.SOURCE_TOUCHSCREEN);
uiAutomation.injectInputEvent(motionUp, true);
motionUp.recycle();
//perform test actions below

如您所见,有两种解决方法:

  1. 我们不能使用uiAutomation.waitForIdle等待进入多模式完成
  2. 我还没有找到一种方法来在任务管理器中选择一个应用程序来请求关注我们的 Activity 。所以我只是在我们 Activity 的可能位置上执行一些触摸事件。

实现后,您将能够像往常一样使用 Espresso 等测试 Activity 。

关于android - 强制检测 Activity 以多窗口模式运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43411919/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com