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

Download web content and load on Android webview at runtime

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

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

|- main.html
|- file.js
|- ...

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

我觉得这行得通

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

但 webview 在 pre lollipop 设备中显示 file not found 错误,在 lollipop 设备中显示:

"The webpage at file:///data/data/<app>/files/main.html could not be loaded because: 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 能够加载本地文件。