0

我有两个 Android 应用程序 - A 和 B。

应用程序 B 有两个 Activity,它的 Launcher Activity 我们称为 Activity 1,另一个称为 Activity 2。

应用程序 A 需要以任意顺序多次调用应用程序 B 的两个活动。

但我发现,如果我调用 Activity 2(来自应用程序 A),然后再调用 Activity 1 - 这是可行的。

什么不起作用是当我需要在我调用 Activity 1 之后的任何时候调用 Activity 2 时。

当我这样做时,无论如何我总是得到 Activity 1。

查看日志,我可以看到 ActivityManager 正在接收我在应用程序 A 的代码中设置的 Activity 2 的正确 ComponentName 的意图 - 但它仍然解析为 Activity 1。

唯一有效的是当我在活动 1 的 onPause() 方法中调用 finish() 时。如果我这样做 - 应用程序 A 可以毫无问题地调用应用程序 B 的两个活动。

这通常不是一个好的解决方案,但它绝对不是我的解决方案,因为我正在尝试定义与应用程序 A 的集成模式,预先存在的应用程序(在本例中为应用程序 B)可以遵循。

有什么方法可以通过我从应用程序 A 调用应用程序 B 的活动(而不是修改应用程序 B 中的活动配置)来改变这个结果。

目前,我通过 ComponentName 调用 Activity 1 和 Activity 2,如下所示:

Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
intent.setComponent(name);
context.startActivity(intent);

唯一的区别是,对于非启动器活动(活动 2),我使用的是操作 VIEW 和类别 DEFAULT(与上面的 MAIN 和 LAUNCHER 相比)。

显然 Activity 2 还需要一个匹配该组合的意图过滤器 - 但假设它确实......

有什么建议么?

4

1 回答 1

1

你已经看过不同的属性了Activity吗?android:finishOnTaskLaunch在我看来,好像它可以提供帮助。

请参阅开发人员指南中的完整列表。

于 2012-06-24T11:17:57.470 回答