这是一个小,所以请耐心等待。
我有两个Android应用程序 - 一个内置在Adobe Air('启动器')和一个从谷歌游戏商店('目标。')下载的应用程序。在某一点上,我希望'启动器'打开'目标'并切换到它。目前我正在通过'intent'协议来实现这一点,如下所示:
navigateToURL(new URLRequest('intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;component=com.magix.camera_mx/com.magix.android.cameramx.main.MainMenu;end'));
...并且它可以工作,但是当“目标”(此示例中的CameraMX)打开时,它使用与“启动器”应用程序相同的“窗口”。这是打开'target:'
之前和之后的两个屏幕截图
这很不方便,但如果一致,我可以忍受。但是,当我尝试完全相同的过程时,只启动金山词霸这样的任意其他应用程序:
navigateToURL(new URLRequest('intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;component=cn.wps.moffice_eng/cn.wps.moffice.documentmanager.PreStartActivity;end'));
'目标'和'启动器'作为漂亮的单独窗口存在。
为什么?是什么决定一个应用程序是作为一个单独的窗口出现,还是重用当前的应用程序?我尝试了一些 - 特别是SoulCraft和Starchart在新窗口中的推出,但大多数其他都重用当前窗口。
这是我在我的空中应用程序中控制的东西吗?这是怎么回事?
答案 0 :(得分:2)
你打电话给"窗口"在Android中被称为"任务"。您应该能够通过设置适当的flags强制目标应用程序在新任务中打开,即FLAG_ACTIVITY_NEW_TASK
(请注意launchFlags=0x10000000
):
intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=<your-package-name>/.<your-activity-name>;end
答案 1 :(得分:2)
两种方案之间的差异(方案1保留在单个任务中,方案2开始新任务)是由于每个“目标”应用程序的intent-filter清单定义。
如果您不需要Intent的结果,您可以添加标记(http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK),如下所示:
navigateToURL(new URLRequest('intent:#Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10000000;component=com.magix.camera_mx/com.magix.android.cameramx.main.MainMenu;end'));