我一直试图通过目前的空气应用程序启动单独的空气应用程序。
这两个应用程序都是使用Adobe Air 2.0 SDK编译的。
到目前为止,我发现的方法除了应用程序ID之外还涉及传递发布者ID,但我相信发布者ID在Air 1.5.3之后变得多余了?
以下是我当前的实施,似乎正确地确定了Air Application的版本号,但是当我尝试启动它时,似乎没有任何事情发生。
private static var _air:Object;
private static var _loader:Loader;
private static var appID:String = "someOtherAirApplication";
private static var pubID:String = NativeApplication.nativeApplication.publisherID;
public static function loadAir() : void
{
_loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.applicationDomain = ApplicationDomain.currentDomain;
_loader.contentLoaderInfo.addEventListener(Event.INIT,onInit);
_loader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"),loaderContext);
}
private static function onInit(event:Event) : void
{
_air = event.target.content;
//the pubID argument resolves to and empty string ""
_air.getApplicationVersion(appID, pubID, versionDetectCallback);
}
private static function versionDetectCallback(version:String) : void
{
if(version != null)
{
_air.launchApplication(appID,pubID);
}
}
我在我尝试加载的应用程序上更改了app-config.xml(app描述符)以允许浏览器调用。
我试图加载的应用程序的应用程序描述符的版本号是“V1”,而versionDetectCallback似乎正在拾取。如果是这种情况,我希望能够启动它,但事实并非如此。
有什么想法吗?
答案 0 :(得分:1)
在找到适当的文档后,我面临的问题似乎是我的方法
_air.launchApplication(appID,pubID);
需要从用户生成的事件(例如单击处理程序)调用。
http://livedocs.adobe.com/flex/3/html/help.html?content=distributing_apps_1.html
此外,发布商ID似乎不是必需属性,而是可以传递空字符串。
编辑:添加了以下示例。
//This method is called from a user initiated event, in this case a mouse click on a button
private static function versionDetectCallback(event:MouseEvent,version:String) : void
{
if(version != null)
{
_air.launchApplication(appID,pubID);
}
}
答案 1 :(得分:0)
将第二个应用程序作为简单的Web SWF工作并通过SWFLoader包含它可能会更好吗?
第二次AIR应用程序的目标是什么?为什么不使用swf?
答案 2 :(得分:0)
我需要从单个“Dispatcher”AIR桌面应用程序启动不同的AIR桌面应用程序,我很难理解如何执行此操作。尝试不同的解决方案不起作用。最后我发现了不同的方法 更简单的方法是使用adobe.utils.ProductManager,它在Windows上进行了测试。
以下是代码:
import adobe.utils.ProductManager;
private var pm:ProductManager = new ProductManager("airappinstaller");
private function launchMyApplication(myApplicationID:String):void
{
pm.launch("-launch " + myApplicationID);
}
关于MyApplication: 它是Flex AIR Application,它有一个文件夹META_INF / AIR;有一个文件 application.xml中