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

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

Благодарю.

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. Вам придется адаптировать решение для запуска по домену вместо Activity.

Поскольку я действительно не знаю специфики того, что вы пытаетесь сделать, я думаю, что я должен указать вам здесь: 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, но я пока не нашел никаких доказательств этого.

Другие вопросы по тегам