Adobe Air - открытие файла с помощью Air - PullRequest
4 голосов
/ 03 сентября 2010

Итак, я создал приложение Air, которое сохраняет файлы с пользовательским типом. Я установил ассоциации файлов, когда я публикую приложение и, когда вы дважды щелкаете файл, открывается приложение эфир. Какие у меня зацепки, чтобы обнаружить, что приложение было открыто через файл? Очевидно, мне нужно обнаружить это, а затем заставить приложение открыть сам файл.

Ответы [ 2 ]

5 голосов
/ 03 сентября 2010

Прослушивание события invoke для WindowedApplication или его nativeApplication .Он имеет свойство массива arguments , которое содержит строковые аргументы, переданные во время этого вызова.

Объект NativeApplication приложения AIR отправляет событие invoke, когда приложениеinvoked.

Объект NativeApplication всегда отправляет событие invoke при запуске приложения, но событие может отправляться и в другое время.Например, запущенное приложение отправляет дополнительный InvokeEvent, когда пользователь активирует файл, связанный с приложением.

Может быть запущен только один экземпляр конкретного приложения.Последующие попытки запустить приложение приведут к новому событию invoke, отправленному объектом NativeApplication запущенного экземпляра.Приложение отвечает за обработку этого события и предпринимает соответствующие действия, такие как открытие нового окна приложения для отображения данных в файле.

InvokeEvent объекты отправляются объектом NativeApplication (NativeApplication.nativeApplication).Чтобы получать события вызова, вызовите метод addEventListener() объекта NativeApplication.Когда прослушиватель событий регистрируется на событие invoke, он также получает все invoke события, которые произошли до регистрации.Эти более ранние события отправляются после возврата к вызову addEventListener(), но необязательно перед новым событием вызова, которое может быть отправлено после регистрации.Таким образом, вы не должны полагаться на порядок отправки.

<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 голосов
/ 03 сентября 2010

Прослушайте 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>
...