Как вызвать приложение из другого приложения в flex mobile

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

Спасибо.


person edsv14    schedule 07.05.2012    source источник
comment
Вы хотите открывать приложения на разных устройствах; (Т.е. приложение в Playbook открывает приложение на iPad); или вы предполагаете, что и приложение A, и приложение b находятся на одном устройстве? Я предполагаю, что есть способ использовать синтаксис URL для запуска другого приложения — аналогично тому, как мы можем сделать это на рабочем столе — но я, честно говоря, не знаю.   -  person JeffryHouser    schedule 07.05.2012
comment
Спасибо за Ваш ответ. Предположим, что приложение A и приложение B находятся на одном устройстве. Если под синтаксис URL-адреса вы имеете в виду что-то вроде этого riaspace.com/2011/08/, я думаю, что это невозможно, так как в конце сообщения говорится. Одно предостережение заключается в том, что вызов других приложений с пользовательскими схемами URL-адресов из приложений AIR не возможный. Модель безопасности AIR более строгая и ограничивает схемы: http:, https:, sms:, tel:, mailto:, file:, app:, app-storage:, vipaccess: и connectpro:.   -  person edsv14    schedule 08.05.2012


Ответы (2)


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

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

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

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

person onosendai    schedule 08.05.2012
comment
Спасибо за ответ, а как насчет PlayBook? можно ли открыть одно приложение из другого в PlayBook даже с помощью ANE? - person edsv14; 08.05.2012
comment
Я не очень хорошо знаком с платформой Playbook. Вы можете переупаковать для него приложения Android, а также приложения Air, но я сомневаюсь, что это включает в себя функциональность намерений, поскольку намерения являются частью системы Android. - person onosendai; 08.05.2012

Поскольку я действительно не знаю особенностей того, что вы пытаетесь сделать, я думаю, что должен указать вам здесь: http://www.riaspace.com/2011/08/defining-custom-url-схемы-для-ваших-аэромобильных-приложений/»rel= Это лучший ответ на вопрос, о котором я знаю.

        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, но я пока не нашел никаких доказательств этого.

person powelljf3    schedule 07.05.2012
comment
Спасибо за Ваш ответ. Но я думаю, что то, что я пытаюсь сделать, невозможно с помощью схем URL. В конце сообщения говорится, что одно предостережение заключается в том, что вызов других приложений с пользовательскими схемами URL-адресов из приложений AIR невозможен. - person edsv14; 08.05.2012
comment
Я склонен согласиться. На рабочем столе довольно легко использовать NativeApplications, если вы хотите попробовать это... Я отредактирую и добавлю соответствующий код выше. Код откроется и запустит команду в собственном стеке, которая в моем случае должна получить имя хоста. - person powelljf3; 08.05.2012