2

基本上,我想根据用户提供给我的应用程序的一些数据生成报告。我的第一个想法是生成一个 PDF 文件。事实证明这是不可行的,因为唯一的免费库不支持文本换行等功能,而付费库的许可证成本约为 1000 美元。

所以我生成了一个包含所有内容的 html 文件,如果我在桌面 Chrome 中打开这个文件,它会呈现正常。当用户单击共享按钮时,应用程序应启动一个意图,以获取默认浏览器或移动 Chrome 以打开 html 文件。

我知道如何通过意图用浏览器打开一个 url,问题是打开一个文件。正在通过 FileProvider 访问 HTML 文件(因此是 uri,例如:“content://[package].fileprovider/[filename].html”)。如果我运行myIntent.setData(htmlFileUri);并启动意图,对话框中不会显示任何浏览器,只有文本编辑器。如果我使用setDataAndType.

接下来我尝试了一个 Data Uri: data:text/html;base64,[html as base64]。同样,如果我将此字符串复制到桌面 Chrome 中,它可以正常工作。但是,如果我用这个 uri 开始一个意图,我会得到

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=data:text/html;base64,[base64]== typ=text/html }.

最后,如果我附加http://到数据 uri 的开头,我可以选择打开 chrome 或默认浏览器。如果我这样做,则不会呈现任何内容,甚至页面 url 也不会呈现。

还有什么我可以尝试的,或者有什么一般的建议吗?提前致谢

4

1 回答 1

0

AFAIK 内置的 HtmlViewer 应用程序无法通过将 Intent 的数据部分设置为text/html. 相反,你可以

  • 将 HTML 复制到外部存储,然后将 Intent 的 URI 设置为file:///mnt/sdcard/path/to/file.html
  • 使用 WebView 创建一个 Activity 并使用该loadData()方法在您的应用程序中加载 HTML。
于 2014-01-31T13:50:49.167 回答