5

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

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

我的客户提供了一套应用程序,其想法是所有属于该套件的应用程序都将从“仪表板应用程序”启动,因此我只在主启动器中显示仪表板应用程序,而不是所有应用程序图标。

让我们用两个应用程序来解决这个想法。仪表板应用程序 (A) 和接收应用程序 (B)。

我想在应用程序 B 上建立一个意图过滤器(我认为),这样每当我进入应用程序 A 并单击应用程序 B 图标时,该应用程序就会启动或从它放开的位置启动(带到前面)。

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

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

但这不是我想要的行为,因为它总是在同一个位置启动应用程序 B。

提前感谢,斯特凡诺

编辑:添加了一些新信息。我正在查看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 中找到该标志。

4

3 回答 3

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);
于 2011-02-04T20:55:51.500 回答
0

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

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

我相信这应该像启动任何其他应用程序一样启动应用程序。

如果这不是您要查找的内容,请添加有关您的逻辑的更多信息。

于 2011-02-04T01:18:45.430 回答
0

我认为,当您切换活动时,android 的默认操作是暂停或将活动保持在用户最后离开的状态。我知道有一种方法可以在切换活动时不保存状态,但我不记得它了。

于 2011-02-07T19:49:52.193 回答