0

我正在尝试使用 UiAutomator 使用以下代码启动第 3 方应用程序:

val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
        device.pressHome()
        val context = ApplicationProvider.getApplicationContext<Context>()
        val intent = context.packageManager.getLaunchIntentForPackage(packageName)?.apply {
            // Clear out any previous instances
            addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
        }

        println("Component: ${intent?.component?.flattenToShortString()}")

        Assert.assertNotNull("Failed to find launch intent", intent)

        context.startActivity(intent)

Intent 没问题,它适用于例如 Google Play,但不适用于我要启动的另一个应用程序(我不能透露)。

甚至更多,adb shell am start -n package/Class工作,但Runtime.getRuntime().exec("am start -n package/Class")报告,Starting: Intent ...但从测试运行时它不会出现在屏幕上。

如果我在运行测试时使用adb shell启动活动,它也可以正常启动。

我认为这个应用程序以某种方式检测到它是从仪器测试启动的。是否可以隐藏我从测试中启动它的事实?

4

0 回答 0