从其他应用程序启动非主要 Activity 清除其顶部

Starting a non-Main Activity from other app clearing its top

我有两个应用程序,应用程序 'A' 和应用程序 'B',第一个应用程序由一个 activity (1) 组成,第二个应用程序有两个活动 (1, 2).

问题是我需要在不出现 B1 的情况下从 A1 调用 B2。但是当我调用它时,总是首先显示 B1,然后自动传递到 B2,当我推回 B2 时,我需要返回到 A1,但它 returns 到 B1。

这是我调用意图时的代码:

val intent = Intent()
intent.component = ComponentName("com.app.appB", "com.app.appB.route.to.activity2")
intent.putExtra("stuff", someStuff)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK

这是清单上来自 B 的 activity2:

<activity
    android:name=".route.to.activity2"
    android:screenOrientation="portrait"
    android:exported="true">
</activity>

我试过更改标志,但不知为何我收到了这个错误:

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

我也试过将 noHistory = true 添加到清单中,但没有任何改变。

希望有人能尽快提供帮助,谢谢!

编辑 1

也尝试使用像 post 中所说的 intent-filter:Launch Activity from another Application Android 但仍然无法正常工作,行为保持不变。

将此添加到清单中的 activity:

<intent-filter>
      <action android:name="com.app.appB.route.to.activity2.LAUNCH_IT"/>
      <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

并这样调用 activity:

val intent = Intent()
intent.action = "com.app.appB.route.to.activity2.LAUNCH_IT"
intent.putExtra("stuff", someStuff)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
applicationContext.startActivity(intent)

经过大量研究和尝试,我发现将 next 参数添加到清单中的 activity 非常有效。我希望这可以帮助其他人:

android:launchMode="singleInstance"