android - 使用 webView 的 loadDataWithBaseURL 不从 sdcard 加载图像

标签 android url android-webview android-sdcard

我想在我的 webview 中设置一些带有图片的 html 内容。 我在互联网上读到我必须使用 loadDataWithBaseUrl 来做这样的事情,因为我需要按顺序链接图像文件夹 (basUrl)

我的 html 内容很好地加载,我什至可以完美地运行 javascripts,但由于某种原因我的图像无法加载。

我在某处读到有一些安全原因,这就是为什么我无法将图像从 sd 卡加载到 webview 并且有人说这可以很容易地完成通过 loadDataWithBaseUrl,所以我真的不知道是哪一个是真的。

这是我尝试过的方法,可能有一些错误,所以不要粗鲁:

我的 html 文件在这里:

mnt/sdcard/com.mypackage.myproject/3/3.html

我的图片在这里:

mnt/sdcard/com.mypackage.myproject/3/images/Cover.png

这是我的内容加载:

myWebView.loadDataWithBaseURL("file:///mnt/sdcard/com.mypackage.myproject/3", myHtml, "text/html", "utf-8", "");

在我的 html 代码中:

<img src="images/Cover.png" alt="Cover.png" height="820"/>

如您所见,我给出了 baseUrl,但出于某种原因,webview 无法加载我的图像。

正如许多人所说,这可能是一个解决方案:

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = "file:/"+ base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadData(html, "text/html","utf-8");

但是,我有 700 个不同的 html 文件,并且在许多不同的地方有很多图像...所以我无法修改 html 代码。

有没有办法将图像文件夹链接到我的 html 文件,以便将它们正确用作 baseUrl?

最佳答案

您的加载语句中存在语法错误。你必须把 : 放在 file

之后
myWebView.loadDataWithBaseURL("file:///mnt/sdcard/com.mypackage.myproject/3", myHtml, "text/html", "utf-8", "");

关于android - 使用 webView 的 loadDataWithBaseURL 不从 sdcard 加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754288/

相关文章:

android - 是否有用于支持自动完成和建议的 URL 输入字段的(可重复使用的)Android UI 组件?

url - jQuery 手机 : URL query string does not change

url - 产品的不同链接对 seo 有利还是有害?

Android USB 调试端口转发错误

android - 如何从 WebView 获取可视化/部分文本?

java - Android USB 转串口接收错误

android - android API LEVEL28 使用 Android SAF(存储访问框架)后如何将文档文件保存在外部存储中

android - 在 android API 级别 8 中仅在风景上播放视频

url - 用于 URL 中分隔符的非保留但安全的字符

android - 强制 Android WebView 在新浏览器中打开