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

voytalexey

Пользователи
  • Постов

    27
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Ответы сообщества

  1. Пост voytalexey - сообщение в Что за канва передаётся в метод OnPaint контрола PaintBox? был отмечен как ответ   
    Нашел ответ в теме "В каких координатах выполняется отрисовка на канве?"
  2. Пост voytalexey - сообщение в [Win] Точнее чем GetTickCount? был отмечен как ответ   
    Уже давно в Windows есть функция QueryPerformanceCounter.
    Аналогичные вашему вопросы решались тут:
    http://delphikingdom.com/asp/answer.asp?IDAnswer=63327
    http://delphikingdom.com/asp/answer.asp?IDAnswer=67074
    http://delphikingdom.com/asp/answer.asp?IDAnswer=62538
  3. Пост voytalexey - сообщение в [Android] [XE7] Как передать два события Intent? был отмечен как ответ   
    Одним вызовом передать два Intent-а? Никак, ибо функции типа startActivity() принимают только один экземпляр.
    Зато в один Intent можно напихать довольно много разнородной информации используя разнообразные Exstra.
  4. Пост voytalexey - сообщение в [Android] Как в вызываемом приложении получить результат, объект JIntent? был отмечен как ответ   
    Заголовок топика должен звучать так:
    "Как в вызываемом приложении получить доступ к объекту JIntent?"
    К сожалению, на этом форуме редактировать содержание поста можно, а вот его заголовок нет.
     
    Теперь ответ на вопрос.
    Доступ есть через SharedActivity.getIntent (надо подключить модули FMX.Helpers.Android и Androidapi.JNI.GraphicsContentViewText).
    Для возврата информации в вызывающее приложение использовал
    SharedActivity.setResult(TJActivity.JavaClass.RESULT_OK, SharedActivity.getIntent); SharedActivity.finish(); Для того чтоб в главном приложении получить результат, надо перед вызовом подписаться на сообщение (в XE6):
    Intent := TJIntent.Create; Intent.setClassName(StringToJString('com.MySoft.PluginOne'),StringToJString('com.embarcadero.firemonkey.FMXNativeActivity')); // наполняем данные для передачи в плагин intent.putExtra(StringToJString('dbl'),123.456); intent.putExtra(StringToJString('str'),StringToJString('qwerty')); // подписываемся на сообщение, колл-бек метод "HandleActivityMessage" FMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage(TMessageResultNotification,HandleActivityMessage); // стартуем плагин SharedActivity.startActivityForResult(Intent,0); Получение результата в вызывающем приложении делается в колл-бек методе, я делал так:
    procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); var RequestCode, ResultCode: Integer; Intent: JIntent; d:double; s:string; begin if not(M is TMessageResultNotification) then exit; TMessageManager.DefaultManager.Unsubscribe(TMessageResultNotification, FMessageSubscriptionID); FMessageSubscriptionID := 0; RequestCode:=TMessageResultNotification(M).RequestCode; ResultCode:=TMessageResultNotification(M).ResultCode; Intent:=TMessageResultNotification(M).Value; if ResultCode = TJActivity.JavaClass.RESULT_OK then begin Memo1.Lines.Append('RESULT_OK'); if Assigned(Intent) then begin d:=Intent.getDoubleExtra(StringToJString('dbl'),111.111); s:=JStringToString(Intent.getStringExtra(StringToJString('str'))); Memo1.Lines.Append('d='+FloatToStr(d)); Memo1.Lines.Append('s='+s); end; end else if ResultCode = TJActivity.JavaClass.RESULT_CANCELED then begin Memo1.Lines.Append('RESULT_CANCELED'); end; end; Проверено в ХЕ6, идеи почерпнуты из следующих источников:
    http://vlad8.com/tech/android-intents-tutorial/
    http://www.darkraha.com/rus/mobile/android/api/intent.php
    http://www.blong.com/Articles/DelphiXE6AndroidActivityResult/ActivityResult.htm
     в последней ссылке есть описание как решать эту проблему в ХЕ5, есть отличия.
×
×
  • Создать...