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

[Android] Открытие HTML страницы в браузере по умолчанию


la_coste

Вопрос

Доброго времени суток, в процессе изучения Delphi XE5 возник такой вопрос:

Возможно ли открыть к примеру HTML страницу из файловой системы устройства в браузере по умолчанию??

Заранее спасибо)

Ссылка на комментарий

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

  • 0
  • Администраторы

Открытие ссылки под Андроид: 

uses
  FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText;

function OpenURL(const AUrl: string): Boolean;
var
  Uri: Jnet_Uri;
  OpenLinkIntent: JIntent;
begin
  Uri := StrToJURI(AUrl);
  // Формируем намерение об открытии ссылки Uri в стандартном браузере
  OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);
  // Устанавливаем тип данных
  OpenLinkIntent.setType(StringToJString('text/html'));
  // Задаем категорию активити, который будет открывать нашу страницу.
  OpenLinkIntent.addCategory(TJIntent.JavaClass.CATEGORY_BROWSABLE);
  // Запускаем приложение и передаем ему наше намерение
  SharedActivity.startActivity(OpenLinkIntent);
end;
А чтобы открыть файл, нужно сформировать урл AUrl в виде: "file:/ //tmp/android.txt" (убрать пробелы) Согласно принятому стандарту оформления ссылок. Изменено пользователем admin
Код дополнен с учетом обсуждении ниже с la_coste.
Ссылка на комментарий
  • 0
  • Администраторы

Попробуйте добавить категорию для интента перед стартом активити:

OpenLinkIntent.addCategory(TJIntent.JavaClass.CATEGORY_BROWSABLE);
Ссылка на комментарий
  • 0
  • Администраторы

Из предполагаемых вариантов действий для устранения ошибки:

 

Четко указать системе тип данных "text/html", тем самым выявив наше намерение, что нужно отправить запрос программе, которая умеет обрабатывать данные именно этого типа.

OpenLinkIntent.setType(StringToJString('text/html'));

Еще советуют убрать один слэш из трех после "file:"

 

Или попробовать варианты, которые есть на StackOverflow: http://stackoverflow.com/questions/7009452/how-to-launch-browser-to-open-local-file

Ссылка на комментарий
  • 0

uses
 Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, FMX.Helpers.Android, Androidapi.JNI.Net;
 
procedure TForm1.Button3Click(Sender: TObject);
var
  OpenLinkIntent: JIntent;
begin
  OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
  OpenLinkIntent.setDataAndType(StrToJURI('file: ///sdcard/inhk.files/index.html'), StringToJString('text/html'));
  SharedActivity.startActivity(OpenLinkIntent);
end;

Именно) 

 

Вот такой код получился

 

Написал строчку в прошлом посте, почему то не отобразилась.

Изменено пользователем admin
Отформатировал код и подправил до рабочего варианта.
Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...