2015-06-20 4 views
0

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

Я знаю, что существует дюжина потоков об этой проблеме (например, this).

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

До сих пор у меня есть:

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

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

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

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

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

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

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

ответ

2

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

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

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

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

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

+0

Спасибо за быстрый ответ! Теперь я создаю файл во внешнем хранилище. Есть ли другие способы открыть файл в Chrome прямо через намерение? При копировании файла: /// - путь в Chrome напрямую, он загрузит сайт – Frame91

+0

@ Frame91: «Сейчас я создаю файл во внешнем хранилище» - это не то, на что указывает «файл», на основе что у вас есть в вашем вопросе. «Есть ли другие способы открыть файл в Chrome прямо через намерение?» - Я не знаю, какие схемы поддерживает Chrome, и эти схемы могут измениться в будущих версиях Chrome. 'http' и' https' кажутся сильными кандидатами, и было бы неплохо, если бы Chrome поддерживал 'content', для использования с' FileProvider' или собственным 'ContentProvider'. – CommonsWare

+0

Теперь я исправил проблему с внешним хранилищем, вот что я имел в виду. У меня была небольшая ошибка, и теперь URI создан правильно. Спасибо, что указали на ошибку! – Frame91