我想在 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/