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

Fedor K

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

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

  • Посещение

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

    17

Активность репутации

  1. Like
    Fedor K получил реакцию от AngryOwl в Как можно реализовать таблицу?   
    Для таких таблиц лучше ее рисовать на ListView. Пока не видел достойных гридов для Андроид.
    Пример реализации:
     
  2. Like
    Fedor K получил реакцию от Rusland в Список приложений Android в listbox   
    Думаю для старта Вам хватит этого sample. Код писал на старой XE7 и сейчас требуются правки, но для понимания подойдет. Если будут вопросы - пишите.
  3. Like
    Fedor K получил реакцию от Rusland в Работа с намерениями в iOS   
    Один из вариантов открытия одного приложения из другого - это использование URL schemes (Ярослав давал выше ссылку).  
    Из приложение А: 
    //отправка uses Macapi.Helpers, FMX.Helpers.iOS; //делаем намерение открыть URL (по сути тоже самое Intent в Android) SharedApplication.openURL(StrToNSUrl(Url)); Приложение Б (подробнее, хотя немного устарело):
    //подписываемся на события if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent); //обработчик function HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; var lURL : string; begin case AAppEvent of TApplicationEvent.OpenURL : begin lURL := (AContext as TiOSOpenApplicationContext).URL; //реализуем логику end; Как передать файлы я вижу несколько вариантов:
    - использовать буфер обмена (класс UIPasteboard - думаю не сложно его использовать в FMX, я им пользовался только в Xamarin, на FMX возможно (нужно проверить) можно использовать FMX.Platform.IFMXClipboardService). Перед открытием URL в "А" - сохраняем картинку/файл в буфер обмена, в "Б" при открытии считываем.
    - передавать в URL путь к файлу (это возможно только, если и "А" и "Б" являются приложением одной группы). пример с Object-C.
  4. Like
    Fedor K получил реакцию от Rusland в Работа с намерениями в iOS   
    1. TMS iCL
    2. DPF- смотрите в сторону TDPFQLPreviewController
    3. Ручками, что-то вроде такого (документация apple):
    var controller : UIDocumentInteractionController; URL: NSURL; {$ENDIF} path : string; temp : Boolean; begin path := ExtractFilePath(ParamStr(0)) + '/Sample.pdf'; {$IFDEF IOS} URL := TNSUrl.Wrap(TNSUrl.OCClass.fileURLWithPath(StrToNSStr(path))); controller := TUIDocumentInteractionController.Wrap( TUIDocumentInteractionController.OCClass.interactionControllerWithURL(URL)); TNSUrl.Wrap(TNSUrl.OCClass.fileURLWithPath(StrToNSStr(path))); temp := controller.presentOpenInMenuFromRect( WindowHandleToPlatform(self.Handle).View.frame, WindowHandleToPlatform(self.Handle).View,true); {$ENDIF} end;  
  5. Like
    Fedor K получил реакцию от rareMax в Работа с намерениями в iOS   
    Один из вариантов открытия одного приложения из другого - это использование URL schemes (Ярослав давал выше ссылку).  
    Из приложение А: 
    //отправка uses Macapi.Helpers, FMX.Helpers.iOS; //делаем намерение открыть URL (по сути тоже самое Intent в Android) SharedApplication.openURL(StrToNSUrl(Url)); Приложение Б (подробнее, хотя немного устарело):
    //подписываемся на события if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent); //обработчик function HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; var lURL : string; begin case AAppEvent of TApplicationEvent.OpenURL : begin lURL := (AContext as TiOSOpenApplicationContext).URL; //реализуем логику end; Как передать файлы я вижу несколько вариантов:
    - использовать буфер обмена (класс UIPasteboard - думаю не сложно его использовать в FMX, я им пользовался только в Xamarin, на FMX возможно (нужно проверить) можно использовать FMX.Platform.IFMXClipboardService). Перед открытием URL в "А" - сохраняем картинку/файл в буфер обмена, в "Б" при открытии считываем.
    - передавать в URL путь к файлу (это возможно только, если и "А" и "Б" являются приложением одной группы). пример с Object-C.
  6. Like
    Fedor K получил реакцию от Pax Beach в Работа с намерениями в iOS   
    Один из вариантов открытия одного приложения из другого - это использование URL schemes (Ярослав давал выше ссылку).  
    Из приложение А: 
    //отправка uses Macapi.Helpers, FMX.Helpers.iOS; //делаем намерение открыть URL (по сути тоже самое Intent в Android) SharedApplication.openURL(StrToNSUrl(Url)); Приложение Б (подробнее, хотя немного устарело):
    //подписываемся на события if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent); //обработчик function HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; var lURL : string; begin case AAppEvent of TApplicationEvent.OpenURL : begin lURL := (AContext as TiOSOpenApplicationContext).URL; //реализуем логику end; Как передать файлы я вижу несколько вариантов:
    - использовать буфер обмена (класс UIPasteboard - думаю не сложно его использовать в FMX, я им пользовался только в Xamarin, на FMX возможно (нужно проверить) можно использовать FMX.Platform.IFMXClipboardService). Перед открытием URL в "А" - сохраняем картинку/файл в буфер обмена, в "Б" при открытии считываем.
    - передавать в URL путь к файлу (это возможно только, если и "А" и "Б" являются приложением одной группы). пример с Object-C.
  7. Like
    Fedor K получил реакцию от Равиль Зарипов (ZuBy) в Работа с намерениями в iOS   
    Один из вариантов открытия одного приложения из другого - это использование URL schemes (Ярослав давал выше ссылку).  
    Из приложение А: 
    //отправка uses Macapi.Helpers, FMX.Helpers.iOS; //делаем намерение открыть URL (по сути тоже самое Intent в Android) SharedApplication.openURL(StrToNSUrl(Url)); Приложение Б (подробнее, хотя немного устарело):
    //подписываемся на события if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(aFMXApplicationEventService)) then aFMXApplicationEventService.SetApplicationEventHandler(HandleAppEvent); //обработчик function HandleAppEvent(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; var lURL : string; begin case AAppEvent of TApplicationEvent.OpenURL : begin lURL := (AContext as TiOSOpenApplicationContext).URL; //реализуем логику end; Как передать файлы я вижу несколько вариантов:
    - использовать буфер обмена (класс UIPasteboard - думаю не сложно его использовать в FMX, я им пользовался только в Xamarin, на FMX возможно (нужно проверить) можно использовать FMX.Platform.IFMXClipboardService). Перед открытием URL в "А" - сохраняем картинку/файл в буфер обмена, в "Б" при открытии считываем.
    - передавать в URL путь к файлу (это возможно только, если и "А" и "Б" являются приложением одной группы). пример с Object-C.
  8. Like
    Fedor K получил реакцию от Kitty в Как правильно обрабатывать параметры запуска приложения в iOS и Android и открывать нужную форму?   
    Для 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.
  9. Like
    Fedor K получил реакцию от AngryOwl в Как правильно обрабатывать параметры запуска приложения в iOS и Android и открывать нужную форму?   
    Для 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.
  10. Like
    Fedor K получил реакцию от Rusland в Как правильно обрабатывать параметры запуска приложения в iOS и Android и открывать нужную форму?   
    Для 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.
  11. Like
    Fedor K получил реакцию от Равиль Зарипов (ZuBy) в Как правильно обрабатывать параметры запуска приложения в iOS и Android и открывать нужную форму?   
    Для 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.
  12. Thanks
    Fedor K получил реакцию от x11 в TNotificationCenter. Можно ли изменить иконку?   
    Иконка изменится внутри приложения в рамах текущего контекста до ее завершения. С других приложений и в системе ничего не поменяется (см. прикрепление).
    Чтобы не влиять на другой функционал, достаточно сделать следующее:
    //запоминаем ид по умолчанию lDefaultId := TAndroidHelper.Context.getApplicationInfo.icon; //устанавливаем нашу кастомную иконку TAndroidHelper.Context.getApplicationInfo.icon := lId; //создаем локальное уведомление NotificationCenter.PresentNotification(lNotification); //возвращаем обратно TAndroidHelper.Context.getApplicationInfo.icon := lDefaultId; п.с. Если такой вариант не устраивает, всегда можно написать class helper for TBaseNotificationCenter и использовать классы JNotificationCompat_Builder, JNotificationManager, JNotification. Справка из developer.android.com.

  13. Like
    Fedor K получил реакцию от Rusland в NOTIFICATION_SERVICE перестает работать с андроид 5.0   
    Необходимо использовать 
    TJContext.JavaClass.NOTIFICATION_SERVICE вместо
    TJActivity.JavaClass.NOTIFICATION_SERVICE Для получения менеджера лучше использовать контекст (данный код работает на версии 4.4 и 5+):
    function GetNotificationService: JNotificationManager; var NotificationServiceNative: JObject; begin NotificationServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE); Result := TJNotificationManager.Wrap((NotificationServiceNative as ILocalObject).GetObjectID); end;  
  14. Like
    Fedor K получил реакцию от zairkz в Андроид-фейсбук-вконтакте   
    При реализации  OAuth 2.0 при помощи TWebBrowser главное отследить Redirect. В случае успешной авторизации в URL будет содержаться необходимый токен. Посмотрите в сторону использования вот этих форм (находятся в ..\source\data\rest):
    {$IFDEF MSWINDOWS} REST.Authenticator.OAuth.WebForm.Win {$ELSE} REST.Authenticator.OAuth.WebForm.FMX {$ENDIF} У них есть событие:
    property OnAfterRedirect: TOAuth2WebFormRedirectEvent read FOnAfterRedirect write FOnAfterRedirect; TOAuth2WebFormRedirectEvent = procedure(const AURL: string; var DoCloseWebView : boolean) of object; Вот обработчик:
    procedure TframeAutch.AfterRedirect(const AURL: string; var DoCloseWebView: boolean); var i:integer; Str: string; Params: TStringList; begin i := pos('#access_token=',AURL); if (i>0) then begin Str := AURL; Delete(Str,1,i); Params:=TStringList.Create; try Params.Delimiter:='&'; Params.DelimitedText := Str; token := Params.Values['access_token']; DoCloseWebView := True; finally Params.Free; end; end; end; **Код выше из XE7, сейчас мб что-то изменилось. Использовал такой подход для авторизации в vk, facebook, google+.
    ***Если нужно, могу сделать демку, но это только на выходных.
  15. Like
    Fedor K получил реакцию от AngryOwl в Андроид-фейсбук-вконтакте   
    При реализации  OAuth 2.0 при помощи TWebBrowser главное отследить Redirect. В случае успешной авторизации в URL будет содержаться необходимый токен. Посмотрите в сторону использования вот этих форм (находятся в ..\source\data\rest):
    {$IFDEF MSWINDOWS} REST.Authenticator.OAuth.WebForm.Win {$ELSE} REST.Authenticator.OAuth.WebForm.FMX {$ENDIF} У них есть событие:
    property OnAfterRedirect: TOAuth2WebFormRedirectEvent read FOnAfterRedirect write FOnAfterRedirect; TOAuth2WebFormRedirectEvent = procedure(const AURL: string; var DoCloseWebView : boolean) of object; Вот обработчик:
    procedure TframeAutch.AfterRedirect(const AURL: string; var DoCloseWebView: boolean); var i:integer; Str: string; Params: TStringList; begin i := pos('#access_token=',AURL); if (i>0) then begin Str := AURL; Delete(Str,1,i); Params:=TStringList.Create; try Params.Delimiter:='&'; Params.DelimitedText := Str; token := Params.Values['access_token']; DoCloseWebView := True; finally Params.Free; end; end; end; **Код выше из XE7, сейчас мб что-то изменилось. Использовал такой подход для авторизации в vk, facebook, google+.
    ***Если нужно, могу сделать демку, но это только на выходных.
  16. Like
    Fedor K получил реакцию от Pax Beach в Андроид-фейсбук-вконтакте   
    При реализации  OAuth 2.0 при помощи TWebBrowser главное отследить Redirect. В случае успешной авторизации в URL будет содержаться необходимый токен. Посмотрите в сторону использования вот этих форм (находятся в ..\source\data\rest):
    {$IFDEF MSWINDOWS} REST.Authenticator.OAuth.WebForm.Win {$ELSE} REST.Authenticator.OAuth.WebForm.FMX {$ENDIF} У них есть событие:
    property OnAfterRedirect: TOAuth2WebFormRedirectEvent read FOnAfterRedirect write FOnAfterRedirect; TOAuth2WebFormRedirectEvent = procedure(const AURL: string; var DoCloseWebView : boolean) of object; Вот обработчик:
    procedure TframeAutch.AfterRedirect(const AURL: string; var DoCloseWebView: boolean); var i:integer; Str: string; Params: TStringList; begin i := pos('#access_token=',AURL); if (i>0) then begin Str := AURL; Delete(Str,1,i); Params:=TStringList.Create; try Params.Delimiter:='&'; Params.DelimitedText := Str; token := Params.Values['access_token']; DoCloseWebView := True; finally Params.Free; end; end; end; **Код выше из XE7, сейчас мб что-то изменилось. Использовал такой подход для авторизации в vk, facebook, google+.
    ***Если нужно, могу сделать демку, но это только на выходных.
  17. Like
    Fedor K получил реакцию от Равиль Зарипов (ZuBy) в Андроид-фейсбук-вконтакте   
    При реализации  OAuth 2.0 при помощи TWebBrowser главное отследить Redirect. В случае успешной авторизации в URL будет содержаться необходимый токен. Посмотрите в сторону использования вот этих форм (находятся в ..\source\data\rest):
    {$IFDEF MSWINDOWS} REST.Authenticator.OAuth.WebForm.Win {$ELSE} REST.Authenticator.OAuth.WebForm.FMX {$ENDIF} У них есть событие:
    property OnAfterRedirect: TOAuth2WebFormRedirectEvent read FOnAfterRedirect write FOnAfterRedirect; TOAuth2WebFormRedirectEvent = procedure(const AURL: string; var DoCloseWebView : boolean) of object; Вот обработчик:
    procedure TframeAutch.AfterRedirect(const AURL: string; var DoCloseWebView: boolean); var i:integer; Str: string; Params: TStringList; begin i := pos('#access_token=',AURL); if (i>0) then begin Str := AURL; Delete(Str,1,i); Params:=TStringList.Create; try Params.Delimiter:='&'; Params.DelimitedText := Str; token := Params.Values['access_token']; DoCloseWebView := True; finally Params.Free; end; end; end; **Код выше из XE7, сейчас мб что-то изменилось. Использовал такой подход для авторизации в vk, facebook, google+.
    ***Если нужно, могу сделать демку, но это только на выходных.
  18. Like
    Fedor K получил реакцию от AngryOwl в NOTIFICATION_SERVICE перестает работать с андроид 5.0   
    Необходимо использовать 
    TJContext.JavaClass.NOTIFICATION_SERVICE вместо
    TJActivity.JavaClass.NOTIFICATION_SERVICE Для получения менеджера лучше использовать контекст (данный код работает на версии 4.4 и 5+):
    function GetNotificationService: JNotificationManager; var NotificationServiceNative: JObject; begin NotificationServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE); Result := TJNotificationManager.Wrap((NotificationServiceNative as ILocalObject).GetObjectID); end;  
  19. Like
    Fedor K получил реакцию от Brovin Yaroslav в NOTIFICATION_SERVICE перестает работать с андроид 5.0   
    Необходимо использовать 
    TJContext.JavaClass.NOTIFICATION_SERVICE вместо
    TJActivity.JavaClass.NOTIFICATION_SERVICE Для получения менеджера лучше использовать контекст (данный код работает на версии 4.4 и 5+):
    function GetNotificationService: JNotificationManager; var NotificationServiceNative: JObject; begin NotificationServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE); Result := TJNotificationManager.Wrap((NotificationServiceNative as ILocalObject).GetObjectID); end;  
  20. Like
    Fedor K получил реакцию от Brovin Yaroslav в TNotificationCenter. Можно ли изменить иконку?   
    Иконка изменится внутри приложения в рамах текущего контекста до ее завершения. С других приложений и в системе ничего не поменяется (см. прикрепление).
    Чтобы не влиять на другой функционал, достаточно сделать следующее:
    //запоминаем ид по умолчанию lDefaultId := TAndroidHelper.Context.getApplicationInfo.icon; //устанавливаем нашу кастомную иконку TAndroidHelper.Context.getApplicationInfo.icon := lId; //создаем локальное уведомление NotificationCenter.PresentNotification(lNotification); //возвращаем обратно TAndroidHelper.Context.getApplicationInfo.icon := lDefaultId; п.с. Если такой вариант не устраивает, всегда можно написать class helper for TBaseNotificationCenter и использовать классы JNotificationCompat_Builder, JNotificationManager, JNotification. Справка из developer.android.com.

  21. Like
    Fedor K получил реакцию от Kitty в NOTIFICATION_SERVICE перестает работать с андроид 5.0   
    Необходимо использовать 
    TJContext.JavaClass.NOTIFICATION_SERVICE вместо
    TJActivity.JavaClass.NOTIFICATION_SERVICE Для получения менеджера лучше использовать контекст (данный код работает на версии 4.4 и 5+):
    function GetNotificationService: JNotificationManager; var NotificationServiceNative: JObject; begin NotificationServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE); Result := TJNotificationManager.Wrap((NotificationServiceNative as ILocalObject).GetObjectID); end;  
  22. Like
    Fedor K получил реакцию от Kitty в Андроид-фейсбук-вконтакте   
    Общая схема такая:
    1. Регистрация своего приложения в API соцсетей (facebook, vk).
    2. Реализуете в своем приложении авторизацию через OAuth 2.0:
    - можно использовать легкий вариант через WebBrowser, т.о. образом сразу поддерживая Android/IOS.
    - можно сделать красиво, используя "Intent" и "startActivityForResult".
    - можно использовать SDK соцсетей, но это совсем другая история...
    3. После регистрации сохраняем токен, при помощи которого мы можем через API автоматически постить сообщения. Учитываем здесь время действия токена, периодически его обновляя.
  23. Like
    Fedor K получил реакцию от Kitty в Андроид-фейсбук-вконтакте   
    1. Перед подобными вызовами активностей с указанием пакета, всегда рекомендуется проверять наличие их в системе:
    //получаем список пакетов, которые могут обработать ваше намерение tempList := TAndroidHelper.Activity.getPackageManager. queryIntentActivities(Intent); //стартуем только в случае наличия пакета if tempList.size > 0 then TAndroidHelper.Activity.startActivity(Intent); 2. При отправке сторонним приложениям файлов (изображения в частности) всегда рекомендуется создавать копию изображения:
    а) с УНИКАЛЬНЫМ  именем - необходимо для разрешения проблем с кешированием в других приложениях. Например Facebook кеширует по имени и при повторном вызове не обновляет;
    б) сохранять нужно в CacheDir, т.к. другим приложениям может попросту не быть доступа к файлу вашего приложения (использование Uri обязательно).
    3. Т.к. у подобных приложений шарингом занимаются отдельные активности, то не забудьте про флаги NewTask | ClearTask у намерения.
    п.с. Не забудьте потом периодически удалять свой кеш.
  24. Like
    Fedor K получил реакцию от Rusland в TNotificationCenter. Можно ли изменить иконку?   
    Иконка изменится внутри приложения в рамах текущего контекста до ее завершения. С других приложений и в системе ничего не поменяется (см. прикрепление).
    Чтобы не влиять на другой функционал, достаточно сделать следующее:
    //запоминаем ид по умолчанию lDefaultId := TAndroidHelper.Context.getApplicationInfo.icon; //устанавливаем нашу кастомную иконку TAndroidHelper.Context.getApplicationInfo.icon := lId; //создаем локальное уведомление NotificationCenter.PresentNotification(lNotification); //возвращаем обратно TAndroidHelper.Context.getApplicationInfo.icon := lDefaultId; п.с. Если такой вариант не устраивает, всегда можно написать class helper for TBaseNotificationCenter и использовать классы JNotificationCompat_Builder, JNotificationManager, JNotification. Справка из developer.android.com.

  25. Like
    Fedor K получил реакцию от Kitty в TNotificationCenter. Можно ли изменить иконку?   
    Иконка изменится внутри приложения в рамах текущего контекста до ее завершения. С других приложений и в системе ничего не поменяется (см. прикрепление).
    Чтобы не влиять на другой функционал, достаточно сделать следующее:
    //запоминаем ид по умолчанию lDefaultId := TAndroidHelper.Context.getApplicationInfo.icon; //устанавливаем нашу кастомную иконку TAndroidHelper.Context.getApplicationInfo.icon := lId; //создаем локальное уведомление NotificationCenter.PresentNotification(lNotification); //возвращаем обратно TAndroidHelper.Context.getApplicationInfo.icon := lDefaultId; п.с. Если такой вариант не устраивает, всегда можно написать class helper for TBaseNotificationCenter и использовать классы JNotificationCompat_Builder, JNotificationManager, JNotification. Справка из developer.android.com.

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