找不到处理Data Uri的活动

时间:2014-01-31 13:30:59

标签: android android-intent android-contentprovider android-fileprovider

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

所以我已经生成了一个包含所有内容的html文件,如果我在桌面Chrome中打开这个文件,它就会很好。当用户点击共享按钮时,应用应启动一个意图,让默认浏览器或移动Chrome打开html文件。

我知道如何通过意图使用浏览器打开网址,问题是打开文件。 HTML文件是通过FileProvider访问的(例如:“content:// [package] .fileprovider / [filename] .html”)。如果我运行myIntent.setData(htmlFileUri);并启动intent,则对话框中不显示任何浏览器,只显示文本编辑器。如果我使用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或默认浏览器。如果我这样做,则不会呈现任何内容,甚至不会呈现页面网址。

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

1 个答案:

答案 0 :(得分:0)

AFAIK通过将您的意图的数据部分设置为text/html,内置的HtmlViewer应用无法可靠地运行。相反,你可以

  • 将HTML复制到外部存储,然后将您的意图的URI设置为file:///mnt/sdcard/path/to/file.html
  • 使用WebView创建活动,并使用loadData()方法在您的应用中加载HTML。