android - 在运行时下载网页内容并在 Android webview 上加载

标签 android webview internal-storage

我想在 WebView 上加载本地 网络内容。我正在下载一个 zip 文件,将其解压缩并将文件(main.html 和资源文件 - css、js、字体、png 等)保存到内部存储空间 ( /data/data/<app>/files/ )。

所有文件都在同一个目录中:

|- main.html
|- 文件.js
|- ...

所以,html文件指向资源文件如下:
<script type="text/javascript" src="file.js"></script>

我觉得这行得通

String path = context.getFilesDir() + File.separator + "main.html";
webview.loadUrl("file://" + path)

但是 WebView 显示file not found Lollipop 前设备和 Lollipop 设备中的错误显示:

“无法加载位于 file:///data/data/<app>/files/main.html 的网页,因为:net::ERR_ACCESS_DENIED”

如果我通过运行将 html 作为字符串加载

String file = htmlFile.fileToString();
webview.loadDataWithBaseURL("", file, "text/html", "utf-8", "");

它可以工作,但我必须通过提供所有资源文件的完整路径来解决依赖关系。必须有更好的方法来处理这个问题。

有谁知道如何在 Android 运行时存储的 webview 上加载本地文件?

谢谢

最佳答案

我忘记了webview的配置方法。

webview.getSettings().setAllowFileAccess(false)

这就是问题所在。通过设置为 true,webview 可以加载本地文件。

关于android - 在运行时下载网页内容并在 Android webview 上加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31134933/

相关文章:

java - Android 布局(固定页眉 + 滚动部分 + 固定页脚)

java - 如何在一定数量的不活动后关闭窗口/Activity

android - 如何在Android 2.1的WebView中加载https

ios - 奇怪的 UIView-Encapsulated-Layout-Height 错误

Android WebView 安全字体系列?

java - 如何将多条数据保存为一个包

android - 显示简单的消息对话框

Android:ArrayList 中的索引超出范围异常

java - Android Studio Gson 到内部存储