我一直在尝试通过我当前的Air Application启动一个单独的Air Application。
这两个应用程序都是使用Adobe Air 2.0 SDK编译的。
到目前为止,我发现的方法除了传递应用程序ID之外,还需要传递发布者ID,但我相信发布者ID在Air 1.5.3之后变得多余了。
下面是我当前的实现,它似乎正确地确定了Air应用程序的版本号,但当我尝试启动它时,似乎什么也没有发生。
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(应用程序描述符),以允许浏览器调用。
我尝试加载的应用程序的应用程序描述符的版本号是“V1”,versionDetectCallback似乎会拾取该版本号。如果是这种情况,我希望能够启动它,但似乎不是这样。
有什么想法吗?
3条答案
按热度按时间apeeds0o1#
在找到适当的文档后,我所面临的问题似乎是,我的方法
需要从使用者产生的事件(例如Click行程常式)呼叫。
http://livedocs.adobe.com/flex/3/html/help.html?content=distributing_apps_1.html
此外,发布者ID似乎不是必需的属性,可以传递空字符串。
编辑:添加了以下示例。
q9yhzks02#
也许让第二个应用程序作为简单的Web SWF工作并通过SWFLoader包含它会更好?
你的第二个AIR应用程序的目标是什么?为什么不只用swf?
sr4lhrrt3#
我需要从一个“Dispatcher”AIR桌面应用程序启动不同的AIR桌面应用程序,我很难理解如何做到这一点。尝试不同的解决方案都不起作用。最后,我找到了不同的方法来做到这一点。
更简单的方法是使用adobe.utils.ProductManager,它是在Windows上测试的。
下面是代码:
关于我的应用程序:它是Flex AIR应用程序,并且它具有文件夹 meta_INF/AIR;有一个文件application.xml
1.标签“id”中的应用程序ID
1.不要忘记设置allowBrowserInvocation = true;默认值为false。2如果您忘记了,您试图启动的应用程序将永远无法启动。