【问题标题】:Open html file in browser from intent从意图在浏览器中打开 html 文件
【发布时间】:2015-09-06 16:58:50
【问题描述】:

我想通过浏览器打开下载的 html 文件,方法是将它们传递到一个意图并从我的活动中启动它们。

我知道有很多关于这个问题的帖子(例如this)。

但是,这些方法似乎都不起作用。

到目前为止,我有:

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

我尝试将 Mimeypes 设置为 text/html,添加/删除类别,甚至使用多重 mimetypes 和额外的 mimetype 标志,但这些想法都不适合我。

目前将打开一个“默认”浏览器,但无法显示该文件。我想在 Chrome、Firefox 或其他流行的浏览器中打开文件。

也很奇怪:我从 Uri.fromFile() 收到的 Uri-String 不能被 Chrome 打开。

路径类似于 file:///data/data/myapp/website.html。

文件本身位于 /storage/emulated/0/myapp/website.html。以 file:/// 为前缀传递此值,Chrome 将显示该网站。

Uri.fromFile 是否正确?

【问题讨论】:

    标签: android android-intent mime-types android-browser


    【解决方案1】:

    路径类似于 file:///data/data/myapp/website.html。

    假设 myapp 确实是您的应用程序 ID,它指向内部存储,并且没有其他应用程序可以访问它(例外:root 设备)。

    Uri.fromFile 是否正确?

    Uri.fromFile() 工作正常,但您传入的file 未正确创建。

    除此之外,请记住浏览器不必支持file:// 方案,因此有些可能不支持。

    【讨论】:

    • 感谢您的快速回答!我现在正在外部存储中创建文件。有没有其他方法可以直接通过意图在 Chrome 中打开文件?直接在Chrome中复制file:///-path时,会加载网站
    • @Frame91:“我现在正在外部存储中创建文件”—​​—这不是file 所指的内容,具体取决于您的问题。 “还有其他方法可以直接通过意图在 Chrome 中打开文件吗?” -- 我不知道 Chrome 支持哪些方案,这些方案可能会在 Chrome 的未来版本中发生变化。 http 和 https 似乎是强有力的候选者,如果 Chrome 支持 content,与 FileProvider 或您自己的 ContentProvider 一起使用,那就太好了。
    • 我现在修复了外部存储问题,这就是我的意思。我有一个小错误,现在正确创建了 URI。感谢您指出错误!
    • 好吧...经过进一步调查...大多数浏览器不接受 file:// 方案..这很可惜,因为我想实现一个离线 rss 阅读器(预取)但仍在使用外部浏览器
    • 由于我找不到任何方法来解决我的问题,我会接受你的回答。目前没有办法支持该文件//...我认为有点难过
    猜你喜欢
    • 2017-04-15
    • 2011-12-18
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多