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

Intent + HTML


walexw

Вопрос

Мне необходимо по кнопке в моем приложении открыть страничку в браузере. Делаю так:
 

 _di_JIntent Intent;
Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW);
Intent->setDataAndType(StrToJURI(L"http://MySite.ru/MyPage.html"), StringToJString(L"text/html"));
SharedActivity()->startActivity(Intent);

Все прекрасно работает. Но в окончательном варианте, мне нужно открыть эту-же страничку не с сайта, а с планшета, она там тоже есть.
Делаю почти тоже самое:

String pageName = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), L"MyPage.html");

if (FileExists(fileName)) {
 _di_JIntent Intent;
Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW);
Intent->setDataAndType(StrToJURI(pageName), StringToJString(L"text/html"));
SharedActivity()->startActivity(Intent);
}

Получаю ошибку:

Цитата

android.content.Activity Not Found Exception
No activity found to handle Intent

Что я делаю не так? Как заставить браузер открыть файл с планшета?
Может быть FileExists врет? Как проверить наличие файла кроме него.

Спасибо.

Изменено пользователем Andrey Efimov
Добавил теги для кода
Ссылка на комментарий

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

  • 0
  • Модераторы

К сожалению, в С++ плохо разбираюсь, но попробуйте вот так:

String pageName = System::Ioutils::TPath::Combine(System::Ioutils::TPath::GetDocumentsPath(), L"MyPage.html");

if (FileExists(fileName)) {
 _di_JIntent Intent;
Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW);
Intent->setDataAndType(StrToJURI(L"file:" + pageName)), StringToJString(L"text/html"));
SharedActivity()->startActivity(Intent);
}

т.е. если вы хотите открыть файл, который находится на устройстве, вам необходимо добавить приставку 'file:' перед строкой содержащей путь до файла.

на Делфях выглядит так:

Intent.setDataAndType(StrToJURI('file:' + 'Путь'), 'Здесь указываем Mime-type в JString');
Ссылка на комментарий
  • -1

Этот код на Delphi работает. Если сможешь,переложи на C++

Цитата
uses
    
  {$IFDEF ANDROID} FMX.Helpers.Android, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os,
  Androidapi.JNI.App, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText,  AndroidApi.Helpers, AndroidApi.JNI.Net,
 AndroidApi.JNI.Provider, AndroidApi.JNI.Telephony,
  FMX.PhoneDialer.Android {$ENDIF} ;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Intent: JIntent;
begin
  Intent := TJIntent.Create;  
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
  Intent.setData(StrToJURI(edit1.text)); //адрес страницы 
  SharedActivity.startActivity(Intent);   
end;

если же не заработает, то можно воспользоваться стандартным ActionList. Там создать ShowShareSheetAction и на кнопку написать текст

Цитата

ShowShareSheetAction1.TextMessage:='Тут адрес сайта';

Данная строка вызовет список установленных браузеров и предложит открыть ссылку через один из них.

Опробовал оба способа. В своем проекте использую второй способ.

Изменено пользователем AndroidHalfNoob
Ссылка на комментарий
  • 0

Мой старый вопрос: как открыть интернет-страничку браузером на устройстве, получил продолжение.
На устройстве (андроид 4.4.2) установлены три браузера. Google, Dolphin и браузер со странным названием "ВЕБ-браузер".
ВЕБ-браузер и Dolphin стояли при покупке, Google я сам поставил.
Приложение fireMonkey на RAD studio XE 10
Пробую открыть страничку (код выше), мне на выбор предлагается Dolphin  и какая-то гляделка HTMLviewer.
Мне нужно открыть именно Гугл-хромом, он и в PDF сохраняет и на виртуальный принтер страницу отправляет.
Я стираю Dolphin (в устройстве) в надежде, что мне предложат другие браузеры, ничего подобного, теперь страничка
сразу открывается HTMLviewer'ом, который может только ее показать и все.
Подскажите пожалуйста, как мне заставить открыть интернет страничку нужным браузером, или увидеть
на выбор все браузеры и выбрать, как делается стандартно, когда страница в интернете.
Спасибо.

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

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

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

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

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

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

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

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

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

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

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