Открыть html-файл в браузере с намерением

Я хотел бы открыть загруженные html-файлы через браузер, передав их в намерение и запустив их из своей деятельности.

Я знаю, что есть десятки тем по этой проблеме (например, этот).

Однако ни один из этих подходов не работает.

Пока у меня есть:

File file = //myHTMLFile;
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.addCategory(Intent.CATEGORY_BROWSABLE);
browserIntent.setData(Uri.fromFile(file));

Я пробовал устанавливать Mimeypes как text/html, добавлять/удалять категории и даже использовать несколько mime-типов и дополнительный флаг mimetype, но ни одна из этих идей не сработала для меня.

В настоящее время открывается браузер «по умолчанию», который не может отображать файл. Я хотел бы открывать файлы в Chrome, Firefox или других популярных браузерах.

Также странно: строка Uri, которую я получаю от Uri.fromFile(), не открывается в Chrome.

Путь выглядит следующим образом: file:///data/data/myapp/website.html.

Сам файл находится по адресу /storage/emulated/0/myapp/website.html. Передав это значение с префиксом file:///, Chrome отобразит веб-сайт.

Верно ли Uri.fromFile?


person Frame91    schedule 20.06.2015    source источник


Ответы (1)


Путь выглядит как file:///data/data/myapp/website.html.

Предполагая, что myapp действительно является идентификатором вашего приложения, это указывает на внутреннее хранилище, и никакое другое приложение не может получить к нему доступ (исключение: корневые устройства).

Uri.fromFile правильный?

Uri.fromFile() работает нормально, но ваш file, который вы передаете, создается неправильно.

Кроме того, имейте в виду, что браузеры не обязаны поддерживать схему file://, а некоторые могут и не поддерживать.

person CommonsWare    schedule 20.06.2015
comment
Спасибо за быстрый ответ! Сейчас я создаю файл во внешнем хранилище. Есть ли другие способы открыть файл в Chrome напрямую через намерение? При прямом копировании пути к файлу:/// в Chrome он загрузит веб-сайт. - person Frame91; 21.06.2015
comment
@Frame91: Сейчас я создаю файл во внешнем хранилище - это не то, на что указывает file, исходя из того, что у вас есть в вашем вопросе. Есть ли другие способы открыть файл в Chrome напрямую через намерение? -- Я не знаю, какие схемы поддерживает Chrome, и эти схемы могут измениться в будущих версиях Chrome. http и https кажутся сильными кандидатами, и было бы неплохо, если бы Chrome поддерживал content для использования с FileProvider или вашим собственным ContentProvider. - person CommonsWare; 21.06.2015
comment
Я исправил проблему с внешним хранилищем, вот что я имел в виду. У меня была небольшая ошибка, и теперь URI создается правильно. Спасибо, что указали на ошибку! - person Frame91; 21.06.2015
comment
хорошо... после дальнейшего изучения... большинство браузеров не принимают схемы file://... что очень жаль, так как я хотел реализовать офлайн-rss-ридер (предварительную выборку), но все еще используя внешние браузеры - person Frame91; 30.06.2015
comment
Поскольку я не смог найти способ решить свою проблему, я приму ваш ответ. На данный момент нет возможности поддержать файл//... Немного грустно, на мой взгляд - person Frame91; 21.08.2015