Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как правильно обрабатывать параметры запуска приложения в iOS и Android и открывать нужную форму?


Pax Beach

Вопрос

Я хочу запустить приложение из другого приложения под iOS и под Android. В зависимости от переданного параметра, который я хочу получить в главной форме, будет открываться соответствующая стартовому параметру форма (Activity в Android).

Пример: Из приложения "Папа" запустить приложение "Дочка", при этом сообщив "Помой посуду!". И чтобы приложение "Дочка" сообщила "Хорошо, папа" и открыло форму "Мойка посуды". ))) Как ее решить на разных платформах?

В Windows это делается запуском приложения с соответствующими параметрами, в зависимости от их значения из проекта или главной формы открывается нужная форма.

В Android для этого сделаны Intent фильтры. Только не понятно, как их обрабатывать в приложениях, написанных в Delphi. Вот как вы это сделали бы?

И как такое делается в приложениях под iOS, естественно, тоже написанных на Delphi или С++.

 

UPD 14-09-2016:

Для Android решение найдено.

Осталось найти решение для iOS.

Изменено пользователем Pax Beach
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

ну наверное использовать событие из TfgApplicationEvents

  1. Получение результатов (интентов) из других приложений (OnActivityResult)
Ссылка на комментарий
  • 0
13 часов назад, ZuBy сказал:

ну наверное использовать событие из TfgApplicationEvents

  1. Получение результатов (интентов) из других приложений (OnActivityResult)

Похоже, ты не о том.

Я хочу, чтобы мое приложение запускалось по интенту (если это Adnroid), внутри приложения я мог разобрать этот интент и выполнить нужное действие.

Может есть и автоматические методы, например, прописать в манифесте IntetnFilter, который завязан на формы (Activity). Но в RAD Studio создается одна супер Activity, через которую идет работа, и этот метод не работает.

В iOS, я вообще не знаю, как это реализовать. Но очень интересно.

Может кто-то может подсказать, где и как копать?

Ссылка на комментарий
  • 0
  • Модераторы
5 минут назад, Pax Beach сказал:

Похоже, ты не о том.

Я хочу, чтобы мое приложение запускалось по интенту (если это Adnroid), внутри приложения я мог разобрать этот интент и выполнить нужное действие.

Может есть и автоматические методы, например, прописать в манифесте IntetnFilter, который завязан на формы (Activity). Но в RAD Studio создается одна супер Activity, через которую идет работа, и этот метод не работает.

В iOS, я вообще не знаю, как это реализовать. Но очень интересно.

Может кто-то может подсказать, где и как копать?

Не обязательно интент прописывать, достаточно указать общий.

А в теле интента передать параметры и прочитать их в том событии

Ссылка на комментарий
  • 0
2 минуты назад, ZuBy сказал:

Не обязательно интент прописывать, достаточно указать общий.

А в теле интента передать параметры и прочитать их в том событии

Что-то я совсем нить рассуждений потерял. О каком "том" событии идет речь? В компоненте TfgApplicationEvents нет такого события.

Вот задача: Из приложения "Папа" запустить приложение "Дочка", при этом сообщив "Помой посуду!". И чтобы приложение "Дочка" сообщила "Хорошо, папа" и открыло форму "Мойка посуды". ))) Как ее решить на разных платформах?

 

Ссылка на комментарий
  • 0
  • Модераторы
2 минуты назад, Pax Beach сказал:

Что-то я совсем нить рассуждений потерял. О каком "том" событии идет речь? В компоненте TfgApplicationEvents нет такого события.

Вот задача: Из приложения "Папа" запустить приложение "Дочка", при этом сообщив "Помой посуду!". И чтобы приложение "Дочка" сообщила "Хорошо, папа" и открыло форму "Мойка посуды". ))) Как ее решить на разных платформах?

для берлина точно есть

на счёт разных платформ незнаю, но посмотрите примеры с сервисами андроид. вам сразу станет ясно о чем я говорю

Ссылка на комментарий
  • 0
28 минут назад, ZuBy сказал:

для берлина точно есть

У меня в палитре нет (

2016-09-14_12-52-26.png

Может как-то надо допиливать? Спрошу тогда у Ярослава.

В любом случае, спасибо за вариант. Хотя, сторонний компонент, не включенный в 3rd Party, не хотелось бы использовать.

 

Изменено пользователем Pax Beach
Ссылка на комментарий
  • 0
36 минут назад, Pax Beach сказал:

Что-то я совсем нить рассуждений потерял. О каком "том" событии идет речь? В компоненте TfgApplicationEvents нет такого события.

Вот задача: Из приложения "Папа" запустить приложение "Дочка", при этом сообщив "Помой посуду!". И чтобы приложение "Дочка" сообщила "Хорошо, папа" и открыло форму "Мойка посуды". ))) Как ее решить на разных платформах?

 

Для Android достаточно в приложении "Дочка" обработать стартовый Intent:

uses
  System.StartUpCopy,
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText;
...
var
    Intent: JIntent;
    lStartIndex : Integer = -1;
begin
    Application.Initialize;
    Intent := TAndroidHelper.Activity.getIntent;
    if (Intent <> nil) and (Intent.getExtras <> nil) and Intent.getExtras.containsKey(StringToJString('START_FORM')) then
    begin
        lStartIndex := Intent.getExtras.getInt(StringToJString('START_FORM'));
    end;
    //создание нужной формы в зависимости от lStartIndex

Для мобильных платформ я бы советовал использовать TFrame, вместо TForm, оперирую лишь одной главной формой. Много форм оставьте для VCL.

Ссылка на комментарий
  • 0
50 минут назад, Fedor K сказал:

Для Android достаточно в приложении "Дочка" обработать стартовый Intent:

Ценный пример, спасибо!

50 минут назад, Fedor K сказал:

Для мобильных платформ я бы советовал использовать TFrame, вместо TForm, оперирую лишь одной главной формой. Много форм оставьте для VCL.

Это вопрос больше холиварный. Но хотелось бы выслушать аргументы в пользу TFrame на мобильных платформах.

 

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...