walexw Опубликовано 11 апреля, 2016 Поделиться Опубликовано 11 апреля, 2016 (изменено) Мне необходимо по кнопке в моем приложении открыть страничку в браузере. Делаю так: _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 врет? Как проверить наличие файла кроме него. Спасибо. Изменено 11 апреля, 2016 пользователем Andrey Efimov Добавил теги для кода Цитата Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 11 апреля, 2016 Модераторы Поделиться Опубликовано 11 апреля, 2016 К сожалению, в С++ плохо разбираюсь, но попробуйте вот так: 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'); walexw 1 Цитата Ссылка на комментарий
-1 AndroidHalfNoob Опубликовано 12 апреля, 2016 Поделиться Опубликовано 12 апреля, 2016 (изменено) Этот код на 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:='Тут адрес сайта'; Данная строка вызовет список установленных браузеров и предложит открыть ссылку через один из них. Опробовал оба способа. В своем проекте использую второй способ. Изменено 12 апреля, 2016 пользователем AndroidHalfNoob walexw 1 Цитата Ссылка на комментарий
0 walexw Опубликовано 30 мая, 2016 Автор Поделиться Опубликовано 30 мая, 2016 Мой старый вопрос: как открыть интернет-страничку браузером на устройстве, получил продолжение. На устройстве (андроид 4.4.2) установлены три браузера. Google, Dolphin и браузер со странным названием "ВЕБ-браузер". ВЕБ-браузер и Dolphin стояли при покупке, Google я сам поставил. Приложение fireMonkey на RAD studio XE 10 Пробую открыть страничку (код выше), мне на выбор предлагается Dolphin и какая-то гляделка HTMLviewer. Мне нужно открыть именно Гугл-хромом, он и в PDF сохраняет и на виртуальный принтер страницу отправляет. Я стираю Dolphin (в устройстве) в надежде, что мне предложат другие браузеры, ничего подобного, теперь страничка сразу открывается HTMLviewer'ом, который может только ее показать и все. Подскажите пожалуйста, как мне заставить открыть интернет страничку нужным браузером, или увидеть на выбор все браузеры и выбрать, как делается стандартно, когда страница в интернете. Спасибо. Цитата Ссылка на комментарий
Вопрос
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); }
Получаю ошибку:
Что я делаю не так? Как заставить браузер открыть файл с планшета?
Может быть FileExists врет? Как проверить наличие файла кроме него.
Спасибо.
Изменено пользователем Andrey EfimovДобавил теги для кода
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.