2012-05-07 5 views
0

Есть ли способ открыть одно приложение из другого приложения в Air? Пример: я открываю приложение A, которое содержит кнопку, открывающую приложение B при нажатии. Предположим, что оба A и B являются отдельными приложениями, которые установлены на устройстве, и что это устройство может быть PlayBook, планшет Ipad или Android.Как вызвать приложение из другого приложения в flex mobile

Спасибо.

+0

Вы хотите открыть приложение cross device; (I.E. приложение в Playbook открывает приложение на iPad); или вы предполагаете, что приложение A и приложение b находятся на одном устройстве? Я предполагаю, что есть способ использовать «Синтаксис URL» для запуска другого приложения - похожего на то, как мы можем это сделать на рабочем столе, - но я честно не знаю. – JeffryHouser

+0

Спасибо за ваш ответ. Предполагая, что приложение A и приложение B находятся на одном устройстве. Если с помощью «Синтаксиса URL» вы имеете в виду что-то вроде этого http://www.riaspace.com/2011/08/defining-custom-url-schemes-for-your-air-mobile-applications/, я думаю, что это невозможно , так как в конце сообщения говорится: «Одно из предостережений заключается в том, что вызов других приложений с помощью настраиваемых схем URL-адресов из приложений AIR невозможен. Модель безопасности AIR более ограничительна и ограничивает схемы: http :, https :, sms :, 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. В конце сообщения говорится: «Одно из предостережений заключается в том, что использование других приложений с помощью настраиваемых схем URL-адресов из приложений AIR невозможно». – edsv14

+0

Я склонен согласиться. На рабочем столе довольно легко использовать NativeApplications, если вы хотите попробовать это ... Я отредактирую и добавлю соответствующий код выше. Код откроет и запустит команду в собственном стеке, который в моем случае должен получить имя хоста. – powelljf3

1

Вам нужно будет пройти маршрут Air Native Extension (ANE). Либо создайте одно ANE-решение для iOS и Android каждый, либо один ANE, который отнимает функциональность в одном решении. Как запустить приложение A из приложения B на Android - это не то же самое, что на iOS. См. this ответ в формате SO.

Чтобы реализовать его на Android, вы можете обернуть собственное решение Java Java в ANE. Нативный код Java использует имя пакета приложения B, чтобы запустить приложение B из приложения A:

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

Вот video tutorial о том, как запустить активность через АНХ, который можно построить на создать ANE. Вам нужно будет адаптировать решение для запуска по домену вместо Activity.

+0

Спасибо за ответ, но как насчет PlayBook? возможно ли открыть одно приложение из другого в PlayBook даже с помощью ANE? – edsv14

+0

Я не очень хорошо знаком с платформой Playbook. Вы можете переупаковать приложения для Android для него, а также приложения для Air, но я сомневаюсь, что это включает в себя функциональность намерений, поскольку намерения являются частью системы Android. –

+0

Я подтверждаю, что так оно и делается, и оно работает –

Смежные вопросы