Android通过Intent启动或带来另一个应用程序

时间:2011-02-03 22:29:19

标签: android android-intent launch intentfilter

我无法让这个工作,这是对这个想法的快速概述。

首先,我无法改变这背后的逻辑,这是来自客户的特定要求,我意识到使用任何工具,例如AnyCut,它可以被绕过,但这并不重要。

我的客户提供了一套应用程序,我们的想法是,所有套装应用程序都将从“Dashboard app”启动,因此我只在主启动器中显示Dashboard应用程序,而不是所有应用程序图标。< / p>

让我们拿两个应用程序来解决问题。仪表板应用程序(A)和接收应用程序(B)。

我想在应用B上建立一个意图过滤器(我认为),这样每当我进入应用程序A,然后点击应用程序B图标,该应用程序将被启动或从它所在的地方开始(带到前面)

这甚至可能吗?如果是这样,我该怎么办?我设法通过使用以下方式在应用程序中专门启动一个活动来启动它:

Intent i = new Intent();
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS");
startActivity(i);

但这不是我想要的行为,因为它总是在同一地点启动应用程序B.

Thanx提前,                 斯特凡诺

编辑:添加了一些新信息。我正在看DDMS。

如果我从头开始通过主Android启动器启动应用程序的意图与我按下主页按钮时的意图完全相同,然后只将应用程序放在前面,即将进行的任何活动。所以我试图重现直到现在,这个意图仍未得到充实。

INFO/ActivityManager(1292): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.package/.uiPackage.Activity}

AnyCut就是这样做的

Intent { act=android.intent.action.VIEW flg=0x10000000 cmp=com.example.package/.uiPackage.Activity bnds=[125,242][235,360]}

知道如何创建完全相同的意图吗?我甚至无法在Intent API中找到该标志。

3 个答案:

答案 0 :(得分:7)

想出来,这就是我做到的。

Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setAction("android.intent.action.VIEW");
i.setComponent(ComponentName.unflattenFromString("com.example.package/com.example.package.activityName"));
startActivity(i);

答案 1 :(得分:0)

我不太确定我是否按照您希望看到的预期结果,但以下内容将从仪表板启动应用程序并从活动堆栈中删除仪表板,使所选应用程序保持运行:

Intent i = new Intent();
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

我认为这应该启动应用程序,就好像你正在启动任何其他应用程序一样。

如果这不符合您的要求,请添加有关您的逻辑的更多信息。

答案 2 :(得分:0)

我认为当你切换活动时,android的默认动作是暂停或将活动保持在其状态,用户将其保留在最后。我知道有一种方法可以做到这一点,以便在切换活动时不会保存状态,但我无法记住这一点。