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