tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1916
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Julian Maicher Julian Maicher ist offline Mitglied Smaragd
    Registriert seit
    Jan 2004
    Ort
    Paderborn
    Beiträge
    1.210
    Hallo!

    Ich möchte eine Air/Flex-Anwendung aus einer anderen Air/Flex-Anwendung heraus starten.
    Dazu nutze ich die air.swf Browserapi, die unter anderem die launchApplication-Methode zur Verfügung stellt.
    Weitere Informationen: http://help.adobe.com/de_DE/AIR/1.5/...8666ade46-7c88

    Diese API ist zwar für die Verwendung aus einem Browser heraus gedacht, allerdings lässt sie sich auch in einer Anwendung laden und verwenden.

    Die Methoden launchApplication und installApplication funktionieren. Die Methode getApplicationVersion funktioniert an sich auch.
    Nur wenn ich getApplicationVersion mit den beiden anderen Methoden kombiniere, bekomme ich Probleme.

    Ich möchte meine zweite Anwendung installieren und starten bzw. nur starten, wenn die Anwendung bereits installiert wurde.
    Also überprüfe ich mit getApplicationVersion ob meine Anwendung bereits installiert wurde. Dieser Methode ist asynchron und ihr wird eine Callback-Funktion übergeben.
    Aus dieser Callback-Funktion kann ich allerdings die Methoden launchApplication und installApplication nicht mehr verwenden.
    Die Version der Anwendung, falls installiert, wird richtig erkannt. Leider bekomme ich auch keine Fehlermeldungen, es tut sich garnichts.

    Ich könnte mir gut vorstellen, dass es daran liegt, dass getApplicationVersion asynchron arbeitet. Habt ihr irgendwelche Ideen, wie man das Problem lösen könnte?

    Hier mein Quellcode:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    
    private var airSWF:Object;
    private var airSWFLoader:Loader = new Loader();
    private var loaderContext:LoaderContext = new LoaderContext(); 
     
    private var appID:String = "de.jmaicher.air.prototyp.target";
    private var pubID:String = "D7D4210ABBE74AC0334651B75699215AB0B4AB0E.1";
    private var appInstallURL:String = "http://localhost/prototyp_target.air"; 
     
     
    /* init method */
    private function init() : void {
        loaderContext.applicationDomain = ApplicationDomain.currentDomain;
        airSWFLoader.contentLoaderInfo.addEventListener(Event.INIT, initAirSWF);
        airSWFLoader.load(new URLRequest("http://airdownload.adobe.com/air/browserapi/air.swf"), loaderContext);
    }
     
                                   
    private function initAirSWF(e:Event):void 
    {
        airSWF = e.target.content;
    }
     
     
    private function installCheck(version:String) { 
        if(version == null)
        {
            installApplication();
        }
        else
        {
            startApplication();
        }
    }
     
     
    private function btnRunApp_click(e:MouseEvent):void {
        airSWF.getApplicationVersion(appID, pubID, installCheck);
    }
     
     
    private function startApplication() : void {
        var args:Array = ["launchFromBrowser"];
        airSWF.launchApplication(appID, pubID, args);   
    }
     
     
    private function installApplication() : void {
        var runtimeVersion:String = "1.0"; 
        var args:Array = ["launchFromBrowser"];
        airSWF.installApplication(appInstallURL, runtimeVersion, args); 
    }
     

  2. #2
    Julian Maicher Julian Maicher ist offline Mitglied Smaragd
    Registriert seit
    Jan 2004
    Ort
    Paderborn
    Beiträge
    1.210
    Okay, ich denke ich weiß warum. Ich habe in der Dokumentation den folgenden kleiner, aber feinen Abschnitt übersehen.

    Die Methode launchApplication() funktioniert nur, wenn sie in einer Ereignisprozedur für ein Benutzerereignis, zum Beispiel einen Mausklick, aufgerufen wurde.
    Weiteres Problem: Wie komme ich in der gestarteten Anwendung an die übergebenen Parameter?
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 01.09.10, 09:30
  2. Aus RCP Anwendung heraus OSGI Jetty Bundle starten
    Von OSGIAnfaenger im Forum Java
    Antworten: 2
    Letzter Beitrag: 03.11.09, 20:17
  3. Externe Anwendung im FLEX bzw. AIR
    Von Thomi123 im Forum Adobe Flex & AIR
    Antworten: 2
    Letzter Beitrag: 03.04.09, 09:23
  4. flex anwendung / bilder resize und upload
    Von frankso im Forum Stellenangebote (entgeltlich)
    Antworten: 0
    Letzter Beitrag: 07.12.08, 12:30
  5. Anwendung starten mit anderen Locale
    Von maddos im Forum Java
    Antworten: 3
    Letzter Beitrag: 28.08.07, 14:17