我正在尝试使用 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启动活动,它也可以正常启动。
我认为这个应用程序以某种方式检测到它是从仪器测试启动的。是否可以隐藏我从测试中启动它的事实?