• 0
Yarpda

Как застать TWebBrowser обрабатывать адреса эл. почты (Android)

Вопросы

Поместил на форму TWebbrowser, открыл страницу.

При нажатии на адрес электронной почты (подсвеченный как ссылка), в андроиде открывается окно с ошибкой:

При загрузке веб-странциы mailto:nnn@mail.ru

net::ERR_UNKNOWN_URL_SCHEME

В принципе понятно, что инициатива MailTo не обрабатывается в Андроид (под Win открывается клиент почты по умолчанию).

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

Вопрос: как сделать такое-же поведение (запрос выбора почтового приложения) при щелчке на email адресе в веб-браузере на своей форме?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 ответов на этот вопрос

  • 0

Все отлично обрабатывается и открывается. Любой браузер по определению должен это делать. У вас должна быть правильная ссылка на электронную почту, в примеру <a href="mailto:putin@russia.gov">Напишите письмо президенту</a>

P.S. Или так, если хотите видеть адрес <a href="mailto:putin@russia.gov">putin@russia.gov</a>

Изменено пользователем Евгений Корепов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 часов назад, Евгений Корепов сказал:

Все отлично обрабатывается и открывается. Любой браузер по определению должен это делать. У вас должна быть правильная ссылка на электронную почту, в примеру <a href="mailto:putin@russia.gov">Напишите письмо президенту</a>

P.S. Или так, если хотите видеть адрес <a href="mailto:putin@russia.gov">putin@russia.gov</a>

Да. Я тоже понимаю что должно работать, но по крайней мере в 10.3 это почему-то не так. Ссылки сформированы правильно. Стандартный браузер открывает. Браузер на форме -нет.

Проверьте пожалуйста у себя кто на 10.3.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
51 минуту назад, Yarpda сказал:

Да. Я тоже понимаю что должно работать, но по крайней мере в 10.3 это почему-то не так. Ссылки сформированы правильно. Стандартный браузер открывает. Браузер на форме -нет.

Проверьте пожалуйста у себя кто на 10.3.

 

На 10.3 отлично работает. Скиньте тестовый проект, проверю, может ошибка в чем то другом?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Прилагаю проект. Все настройки по умолчанию при создании нового проекта в 10.3. При запуске нажать на кнопку "Открыть страницу" и щелкнуть любому из адресов эл. почты.

Открываемая страница http://www.docme.ru/contacts

WebPrj.rar

APK.rar

Изменено пользователем Yarpda
добавил APK

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1
56 минут назад, Yarpda сказал:

Прилагаю проект. Все настройки по умолчанию при создании нового проекта в 10.3. При запуске нажать на кнопку "Открыть страницу" и щелкнуть любому из адресов эл. почты.

Открываемая страница http://www.docme.ru/contacts

WebPrj.rar

APK.rar

Прошу прощения, я ввел вас в заблуждение (тестировал на одном своем проекте). Открытие подобных ссылок вы должны делать самостоятельно, обрабатывая событие браузера ShouldStartLoadWithRequest.

Вот код:

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  {$IFDEF ANDROID}
  Androidapi.JNI.Net,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.Helpers,
  {$ENDIF ANDROID}
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
  FMX.WebBrowser, FMX.Controls.Presentation;
.....

const
  ConstMainURL = 'http://www.docme.ru/contacts';
....

procedure THeaderFooterForm.WebBrowser1ShouldStartLoadWithRequest(
  ASender: TObject; const URL: string);
begin
  if Not URL.StartsWith(ConstMainURL) then // Если ссылка перехода отличается от базовой, то открываем ее через активити
  begin
    WebBrowser1.Stop;
    OpenURL(URL);
  end;
end;

procedure THeaderFooterForm.OpenURL(const AUrl: string);
{$IFDEF ANDROID}
var Uri: Jnet_Uri;
    OpenLinkIntent: JIntent;
{$ENDIF ANDROID}
begin
{$IFDEF MSWINDOWS}
  ShellExecute(0, 'open', PChar(AUrl), nil, nil, SW_SHOWNORMAL);
{$ENDIF MSWINDOWS}
{$IFDEF ANDROID}
  Uri := StrToJURI(AUrl);
  OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);
  TAndroidHelper.Activity.startActivity(OpenLinkIntent);
{$ENDIF ANDROID}
end;

И прикрепляю ваш проект с моими изменениями

WebPrj.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
33 минуты назад, Евгений Корепов сказал:

Прошу прощения, я ввел вас в заблуждение (тестировал на одном своем проекте). Открытие подобных ссылок вы должны делать самостоятельно, обрабатывая событие браузера ShouldStartLoadWithRequest.

А вот за это огромное спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу