Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android通过Intent启动或推出另一个应用程序_Android_Android Intent_Launch_Intentfilter - Fatal编程技术网

Android通过Intent启动或推出另一个应用程序

Android通过Intent启动或推出另一个应用程序,android,android-intent,launch,intentfilter,Android,Android Intent,Launch,Intentfilter,我很难做到这一点,这里有一个想法的快速概述 首先,我不能改变这背后的逻辑,这是客户的一个特定要求,我意识到任何工具,如AnyCut,都可以绕过它,但这并不重要 我的客户提供了一套应用程序,其想法是所有连接到该套件的应用程序都将从“仪表板应用程序”启动,因此我只在主启动器中显示仪表板应用程序,而不是所有应用程序图标 让我们用两个应用程序来解决这个问题。仪表板应用程序(A)和接收应用程序(B) 我想在应用程序B上建立一个意向过滤器(我想),这样每当我进入应用程序A并单击应用程序B图标时,应用程序就会

我很难做到这一点,这里有一个想法的快速概述

首先,我不能改变这背后的逻辑,这是客户的一个特定要求,我意识到任何工具,如AnyCut,都可以绕过它,但这并不重要

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

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

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

这可能吗?如果是,我怎么做?我在应用程序中专门启动了一项活动,并使用以下方法成功启动了该应用程序:

Intent i = new Intent();
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS");
startActivity(i);
但这并不是我想要的行为,因为它总是在同一地点启动应用程序B

Thanx提前, 斯特凡诺

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

如果我从零开始通过主Android启动器启动应用程序,其目的与我按下home(主页)按钮,然后只将应用程序放在最前面时完全相同,无论我参与了什么活动。所以我一直试图复制这个意图,但直到现在都没有成功

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中找不到该标志。

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

Intent i = new Intent();
i.setClassName("PACKAGE_NAME","SPECIFIC_CLASS");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
我相信这应该像启动其他应用一样启动应用程序


如果这不是您想要的,请添加更多关于您的逻辑的信息。

找到了,我就是这样做的

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);

我认为,当你切换活动时,android的默认操作是暂停或保持活动的状态,用户最后将其保留。我知道有一种方法可以使状态在切换活动时不被保存,但我记不起来了。

不完全是我想要的。对不起,我不想指定要打开的类,我希望用户能够使用该应用程序,但例如,当他单击“主页”时,然后回到仪表板,继续使用原来的应用程序。
而不是在它停止的任何活动中调用另一个应用程序
这并不是android的工作方式。为了做到这一点,我相信你必须打破很多规则,但这是可能的。我想不出有什么比把你的意图中的额外信息传递回仪表板来保存你的位置更优雅的了。使用startactivityforresult()和传回活动名称可以工作,但是您可能需要更多的逻辑来将用户放在他们离开的位置。我会保留从仪表板生成的所有活动的历史记录,然后根据活动引用正确的位置。希望这有助于思考这个问题。@Falmari我不认为这会“破坏”android的工作方式,想法是让仪表板像android启动器一样工作。当你在应用程序中时,单击home(主页)退出,然后再次单击应用程序图标,它会跳回它所在的活动。这正是我所做的,除了我从启动器中移除图标并将其放在仪表板中。这很有趣。这是否真的会让你回到从主应用程序(仪表板)启动的辅助应用程序中停止的位置?如果是这样的话,这是个好消息@ice911的功能和你描述的一模一样,安卓系统似乎把应用程序调到了原来的状态。我在emulator、NexusOne、g2和galaxy选项卡上进行了测试,所有这些都可以使用。im所指的
activityName
是Manifest.asp中标记为main的。像符咒一样工作。也适用于PendingEvents,例如通知:
PendingEvent.getActivity(context,0,i,0)