Перейти к содержанию
  • Регистрация
  • 0
Yarpda

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

Вопрос

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

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

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

net::ERR_UNKNOWN_URL_SCHEME

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

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

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

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


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

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

  • 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.

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

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


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

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

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

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

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

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

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

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

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


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

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

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