- 0
Открытие ссылки в проекте Firemonkey
-
Похожий контент
-
- 1 ответ
- 720 просмотров
-
- 1 ответ
- 513 просмотра
-
- 0 ответов
- 704 просмотра
-
- 7 ответов
- 1 389 просмотров
-
- 2 ответа
- 1 054 просмотра
-
AppTethering не отправляет поток данных в Android-приложение
От Delpher-X,
- delphi
- delphi 10.3.3
- (и ещё 3 )
- 5 ответов
- 1 160 просмотров
-
- 24 ответа
- 5 803 просмотра
-
- 1 ответ
- 2 091 просмотр
-
Как изменить цвет фона или текста заголовка tstringgrid
От BelovAlex,
- tstringgrid
- firemonkey
- (и ещё 1 )
- 0 ответов
- 1 080 просмотров
-
- 0 ответов
- 1 157 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
x11
Нет ли у FMX готовой функции для открытия веб-ссылок из приложения?
А то приходится городить огород с лисапетами и кучей IFDEF.
В итоге что у меня получилось.
Для удобства разнес все по разным модулям.
Модуль для Windiws
unit uUtilsWindows; interface {$IFDEF MSWINDOWS} uses ShellApi, Variants, Windows, FMX.Types, FMX.Platform.Win; procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); {$ENDIF} implementation {$IFDEF MSWINDOWS} procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); begin ShellExecute(FmxHandleToHWND(WindowHandle), 'open', PChar(VarToStr(sURL)), nil, nil, SW_NORMAL); end; {$ENDIF} end.
Модуль для Android
unit uUtilsAndroid; interface {$IFDEF ANDROID} uses FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText, AndroidApi.Helpers; procedure AndroidOpenUrl(const sUrl: string); {$ENDIF} implementation {$IFDEF ANDROID} procedure AndroidOpenUrl(const sUrl: string); Var Uri: Jnet_Uri; OpenLinkIntent: JIntent; begin Uri := StrToJURI(sUrl); OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);// будем что-то смотреть OpenLinkIntent.addCategory(TJIntent.JavaClass.CATEGORY_BROWSABLE);// смотреть в браузере OpenLinkIntent.setData(Uri);// смотреть эту ссылку SharedActivity.startActivity(OpenLinkIntent);// открываем end; {$ENDIF} end.
теперь в основной форме:
uses ..., ...{$IFDEF ANDROID}, vkbdhelper, uUtilsAndroid{$ENDIF} {$IFDEF MSWINDOWS}, uUtilsWindows {$ENDIF}; ... ... ... procedure TfmEditObject.actOpenUrlExecute(Sender: TObject); begin {$IFDEF ANDROID}AndroidOpenUrl(edMapsCoordUrl.Text);{$ENDIF} {$IFDEF MSWINDOWS}WindowsOpenUrl(edMapsCoordUrl.Text, Self.Handle);{$ENDIF} end;
А если добавлять ещё одну платформу, то ещё один модуль понадобится.
Может есть более правильный вариант, так сказать, дизайна исходного кода?
Ссылка на комментарий
4 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.