1

我终于想出了如何从浏览器启动我的 AIR 本机安装程序桌面应用程序,但我没有收到任何传入的参数。

我将此添加到我的本机安装程序应用程序(来自http://livedocs.adobe.com/flex/3/html/help.html?content=app_launch_1.html

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"       
       invoke="onInvoke(event)">
<mx:Script>
<![CDATA[
import flash.events.InvokeEvent;
import flash.desktop.NativeApplication;

public function onInvoke(invokeEvent:InvokeEvent):void {
    var now:String = new Date().toTimeString();
    logEvent("Invoke event received: " + now);

    if (invokeEvent.currentDirectory != null){
        logEvent("Current directory=" + invokeEvent.currentDirectory.nativePath);
    } else {
        logEvent("--no directory information available--");
    }

    if (invokeEvent.arguments.length > 0){
        logEvent("Arguments: " + invokeEvent.arguments.toString());
    } else {
        logEvent("--no arguments--");
    }
}

public function logEvent(entry:String):void {
    log.text += entry + "\n";
    trace(entry);
}
]]>

(etc.)

该应用程序通过此方法成功启动

        private function onButtonClicked(e:Event):void {
            var APP_ID:String = "my_app";
            var PUB_ID:String = "";
            var ARGS:Array = ["123", "abc"];
            _air.launchApplication( APP_ID,PUB_ID, ARGS );
        }

logEvent 说收到了 Invoke 事件,但我总是得到“--no arguments--”。

我究竟做错了什么?

4

1 回答 1

1

使用BrowserInvokeEvent而不是invokeEvent在应用程序上。

将此添加到您的应用程序完整处理程序中,

NativeApplication.nativeApplication.addEventListener(BrowserInvokeEvent.BROWSER_INVOKE, onBrowserInvoke);

然后在浏览器启动传递的参数上播放以下方法。

protected function onBrowserInvoke(event:BrowserInvokeEvent):void
{
    Alert.show(event.arguments.toString(),"My Args");           
}
于 2013-03-21T20:58:30.807 回答