Adobe Air - 使用Air打开文件

4

我创建了一个保存为自定义文件类型的Air应用程序。当我发布应用程序并设置文件关联时,双击文件会打开Air应用程序。有哪些钩子可以让我检测到应用程序是通过文件打开的?显然,我需要检测到这一点,然后让应用程序自己打开文件。

2个回答

5
WindowedApplication 或其 nativeApplication 上监听 invoke 事件。它有一个 arguments 数组属性,其中包含在此调用期间传递的字符串参数。
当应用程序被调用时,AIR 应用程序的 NativeApplication 对象会分派一个 invoke 事件。 NativeApplication 对象始终在启动应用程序时分派一个 invoke 事件,但也可能在其他时间分派该事件。例如,正在运行的应用程序在用户激活与应用程序相关联的文件时会分派另一个 InvokeEvent
特定应用程序的仅允许启动单个实例。尝试启动应用程序的后续尝试将导致正在运行实例的 NativeApplication 对象分派新的 invoke 事件。处理此事件并采取适当的操作(例如打开新的应用程序窗口以显示文件中的数据)是应用程序的责任。 InvokeEvent 对象由 NativeApplication 对象(NativeApplication.nativeApplication)分派。要接收 invoke 事件,请调用 NativeApplication 对象的 addEventListener() 方法。当事件侦听器注册为 invoke 事件时,它还将接收在注册之前发生的所有 invoke 事件。这些较早的事件在调用 addEventListener() 返回后分派,但不一定在注册后分派新的 invoke 事件之前。因此,您不应该依赖于分派顺序。
<mx:WindowedApplication creationComplete="init()">
  <mx:Script>
  <![CDATA[
     public function init():void
     {
          NativeApplication.nativeApplication.addEventListener(InvokeEvent.Invoke, onInvoke);
     }
     public function onInvoke(e:InvokeEvent):void
     {
          var args:Array = e.arguments;
          trace("There are " + args.length + " arguments");
          for(var i:int = 0; i < args.length; i++)
          {
               trace("Argument #" + i + " " + args[i]);
          }
     }
  ]]>
  </mx:Script>
</mx:WindowedApplication>

4

请监听InvokeEvent,它将保存在arguments属性中所请求的文件名:

快速的mxml示例:

<?xml version="1.0"?>
<mx:WindowedApplication
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:s="spark.components.*"
    invoke="onAppInvoke(event);">
    <mx:Script><![CDATA[
      import mx.controls.Alert;

      private function onAppInvoke(event:InvokeEvent):void {
        if (event.arguments.length>0) {
           // ok app call with an arguments
           var fileName:String=event.arguments[0];
           Alert.show("app open with : "+fileName);
        } else {
           // app open normally
           Alert.show("normal launch");
        }
      }
     ]]></mx:Script>
</mx:WindowedApplication>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接