在Air的“新窗口”中打开另一个Android应用程序

时间:2014-03-19 23:17:02

标签: android actionscript-3 mobile android-intent air

这是一个,所以请耐心等待。

我有两个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:'

之前和之后的两个屏幕截图

launcher alone

target taking over launcher's window

这很不方便,但如果一致,我可以忍受。但是,当我尝试完全相同的过程时,只启动金山词霸这样的任意其他应用程序:

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

'目标'和'启动器'作为漂亮的单独窗口存在。

target opening in its own window, leaving the launcher alone

为什么?是什么决定一个应用程序是作为一个单独的窗口出现,还是重用当前的应用程序?我尝试了一些 - 特别是SoulCraft和Starchart在新窗口中的推出,但大多数其他都重用当前窗口。

这是我在我的空中应用程序中控制的东西吗?这是怎么回事?

2 个答案:

答案 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'));