【发布时间】:2014-02-24 05:19:00
【问题描述】:
基本上,我想根据用户提供给我的应用的一些数据生成报告。我的第一个想法是生成一个 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 开始一个意图,我会得到 p>
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 也不会呈现。
还有什么我可以尝试的,或者有什么一般性的建议吗? 提前致谢
【问题讨论】:
-
将您的 html 文件保存在资产中并从那里启动它或用户 webview 以在您自己的项目中显示 html
标签: android android-intent android-contentprovider android-fileprovider