2012-05-07 6 views
0

Air의 다른 앱에서 하나의 앱을 여는 방법이 있습니까? 예 : 클릭하면 앱 B를 여는 버튼이 포함 된 앱 A를 엽니 다. A와 B가 모두 기기에 설치된 분리 된 앱이고이 기기가 PlayBook, Ipad 또는 Android 태블릿 일 수 있다고 가정합니다.플렉스 모바일의 다른 앱에서 앱을 호출하는 방법

감사합니다.

+0

기기 간 교차 앱을 열시겠습니까? (I.E. 플레이 북의 앱은 iPad에서 앱을 엽니 다.); 또는 앱 A와 앱 B가 같은 기기에 있다고 가정합니까? "URL 구문"을 사용하여 다른 앱을 실행하는 방법이 있다고 가정합니다. 데스크톱에서이 작업을 수행하는 것과 비슷하지만 솔직히 모르겠습니다. – JeffryHouser

+0

답변 해 주셔서 감사합니다. 앱 A와 앱 B가 모두 같은 기기에 있다고 가정합니다. "URL 구문"을 사용하여 http://www.riaspace.com/2011/08/defining-custom-url-schemes-for-your-air-mobile-applications/과 같은 것을 의미하는 경우, 나는 불가능하다고 생각합니다. "AIR 보안 모델은보다 제한적이며 스키마를 다음과 같이 제한합니다. http :, https :, sms : 게시물 끝 부분에서"한 가지주의 할 점은 AIR 응용 프로그램의 사용자 정의 URL 스키마가있는 다른 응용 프로그램을 호출 할 수 없다는 것입니다. :, tel :, mailto :, 파일 :, app :, app-storage :, vipaccess : 및 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 Schemes을 사용해서는 안된다 고 생각한다. 게시물 끝에는 "한 가지주의 할 점은 AIR 응용 프로그램의 사용자 정의 URL 스키마가있는 다른 응용 프로그램을 호출 할 수 없다는 것입니다." – edsv14

+0

나는 동의하는 경향이있다. 데스크톱에서 NativeApplications를 사용하는 것이 매우 쉽습니다. 시도해보고 싶다면 위의 코드를 편집하고 추가하십시오. 이 코드는 열리고 네이티브 스택에 명령을 실행합니다. 여기서는 호스트 이름을 얻는 것입니다. – powelljf3

1

ANE (Air Native Extension) 경로를 사용해야합니다. iOS와 Android 각각에 대해 하나의 ANE 솔루션을 만들거나 하나의 솔루션으로 기능을 축소하는 하나의 ANE를 생성하십시오. Android의 앱 B에서 앱 A를 실행하는 방법은 iOS와 동일하지 않습니다. SO에 this 답변을 참조하십시오.

Android에서 구현하려면 기본 Android Java 솔루션을 ANE로 래핑합니다. 네이티브 자바 코드는 응용 프로그램 A에서 응용 프로그램 B를 실행하는 응용 프로그램 B의 패키지 이름을 사용

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

당신이 당신의 ANE를 만드는 데에 구축 할 수있는 ANE를 통해 활동을 시작하는 방법에 대한 video tutorial이다. 액티비티 대신 도메인별로 실행되도록 솔루션을 맞춤 설정해야합니다.

+0

답변 주셔서 감사합니다.하지만 PlayBook은 어떻게해야합니까? ANE를 사용해도 PlayBook에서 다른 앱을 열 수 있습니까? – edsv14

+0

플레이 북 플랫폼에 익숙하지 않습니다. 인 텐트는 Android 시스템의 일부이므로 인 텐트 기능이 포함되어 있는지 의심 스럽습니다. –

+0

이것이 어떻게 완료되었는지 확인하고 작동 중입니다. –

관련 문제