意图忽略活动

时间:2012-06-24 11:03:28

标签: android android-intent

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

应用程序B有两个活动,它的Launcher活动我们将其称为活动1,另一个我们称之为活动2。

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

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

什么不起作用是我在调用活动1后随时调用活动2。

当我这样做时,我总是得到活动1。

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

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

这通常不是一个好的解决方案,但它绝对不是我的解决方案,因为我正在尝试使用应用程序A定义集成模式,预先存在的应用程序(在这种情况下为App 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相比)。

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

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您是否已经了解了不同的Activity属性? android:finishOnTaskLaunch在我看来似乎可以提供帮助。

查看Developers Guide的完整列表。