2012-05-07 9 views
0

Airの別のアプリから1つのアプリを開く方法はありますか?例:クリックするとアプリBを開くボタンが含まれているアプリAを開きます。 AとBの両方が、デバイスにインストールされている別個のアプリケーションであり、このデバイスがPlayBook、Ipad、またはAndroidのタブレットである可能性があるとします。フレックスモバイルの別のアプリからアプリを呼び出す方法

ありがとうございました。

+0

アプリをクロスデバイスとして開きますか。 (I.E.プレイブックのアプリはiPad上にアプリを開く);または、App AとApp Bの両方が同じデバイスにあると仮定していますか? 「URL構文」を使用して別のアプリを起動する方法があると仮定していますが、これはデスクトップ上でこれを行う方法と似ていますが、わかりません。 – JeffryHouser

+0

あなたの答えをありがとう。アプリAとアプリBの両方が同じデバイスにあると仮定します。 「URL構文」を使って、このようなことを意味する場合はhttp://www.riaspace.com/2011/08/defining-custom-url-schemes-for-your-air-mobile-applications/、私は不可能だと思います「AIRアプリケーションのカスタムURLスキームを使用して他のアプリケーションを呼び出すことは不可能だ」という警告が1つあります。AIRセキュリティモデルはより限定的で、スキームを以下のように制限しています:http :, https :, sms :、tel :, mailto :,ファイル:, app :, app-storage :, vipaccess:and connectpro: " – edsv14

答えて

0

私は実際にあなたがしようとしていることの詳細を知らないので、ここであなたに指摘しておかなければならないと思います。http://www.riaspace.com/2011/08/defining-custom-url-schemes-for-your-air-mobile-applications/私が知っている質問に対する最良の答えです。

 private function getHostName() : void 
     { 
      if (NativeProcess.isSupported) 
      { 
       var OS : String = Capabilities.os.toLocaleLowerCase(); 
       var file : File; 

       if (OS.indexOf('win') > -1) 
       { 
        // Executable in windows 
        file = new File('C:\\Windows\\System32\\hostname.exe'); 
       } 
       else if (OS.indexOf('mac') > -1) 
       { 
        // Executable in mac 
       } 
       else if (OS.indexOf('linux')) 
       { 
        // Executable in linux 
       } 

       var nativeProcessStartupInfo : NativeProcessStartupInfo = new NativeProcessStartupInfo(); 
       nativeProcessStartupInfo.executable = file; 

       var process : NativeProcess = new NativeProcess(); 
       process.addEventListener(NativeProcessExitEvent.EXIT, onExitError); 
       process.addEventListener(ProgressEvent.STANDARD_OUTPUT_DATA, onOutput); 
       process.start(nativeProcessStartupInfo); 
       process.closeInput(); 
      } 
     } 

     private function onOutput(event : ProgressEvent) : void 
     { 
      var strHelper : StringHelper = new StringHelper(); 
      formStationID.text = event.target.standardOutput.readUTFBytes(event.target.standardOutput.bytesAvailable); 
      formStationID.text = strHelper.trimBack(formStationID.text, "\n"); 
      formStationID.text = strHelper.trimBack(formStationID.text, "\r"); 
     } 

このコードは、ワークステーション名を取得します。 IOSとAndroidでこれができると聞いたことがありますが、まだその証拠は見つかりませんでした。

+0

あなたの答えをありがとう。しかし、私はしようとしていることはURLスキームを使っては不可能だと思います。投稿の終わりには、「1つの注意点は、AIRアプリケーションのカスタムURLスキームを持つ他のアプリを呼び出すことは不可能だということです。 – edsv14

+0

私は同意する傾向があります。デスクトップ上でNativeApplicationsを使用するのは簡単です。試してみたいのですが...上記の適切なコードを編集して追加します。コードが開き、ネイティブスタック上でコマンドを実行します。私の場合、ホスト名を取得することです。 – powelljf3

1

あなたはAir Native Extension(ANE)ルートに行く必要があります。 iOSとAndroid用にそれぞれ1つのANEソリューションを作成するか、機能を1つのソリューションにまとめた1つのANEを作成します。 AndroidのアプリBからアプリAを起動する方法は、iOSと同じではありません。 SOのthis答えを参照してください。

Androidで実装するには、ネイティブAndroid JavaソリューションをANEにラップします。ネイティブJavaコードは、アプリAからアプリBを起動するには、アプリBのパッケージ名を使用しています。ここでは

Intent intent = getPackageManager().getLaunchIntentForPackage("com.yourdoman.yourapp"); 
startActivity(intent); 

はあなたANEを作成するために構築することができANEを通じて活動を起動する方法についてvideo tutorialです。アクティビティの代わりにドメインで起動するようにソリューションを調整する必要があります。

+0

答えをいただきありがとうございますが、PlayBookはどうですか? ANEを使用していてもPlayBookで別のアプリを開くことは可能ですか? – edsv14

+0

私はプレイブックのプラットフォームに慣れていません。インテントはAndroidシステムの一部であるため、インテント機能を含むことは疑いのないものです。 –

+0

これがどのように行われているかを確認しています –