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 イベントを受信したことを示していますが、常に「--引数なし--」と表示されます。

私は何を間違っていますか?

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 に答える