📜  图像 src 标记在 webview android 中不起作用 (1)

📅  最后修改于: 2023-12-03 15:23:04.917000             🧑  作者: Mango

图像 src 标记在 webview android 中不起作用

在使用 WebView 加载网页时,我们可能会遇到一个问题,即图像的 src 标记在 WebView 中不起作用。这意味着,即使我们在网页中正确地设置了图片的路径,WebView 仍然无法正确地显示图片。

这个问题很可能是由于 WebView 的默认设置导致的。默认情况下,WebView 不允许加载本地文件或跨域文件。因此,如果图片的路径是本地文件或跨域文件,它将无法正确加载。

我们可以通过以下方法来解决这个问题:

1. 开启 WebView 的本地文件访问权限

我们可以通过在代码中调用以下方法来开启 WebView 对本地文件的访问权限:

webView.getSettings().setAllowFileAccess(true);

这将允许 WebView 加载本地文件或跨域文件。

2. 使用 data 协议

我们还可以使用 data 协议来加载图像。data 协议允许我们将图片数据嵌入到 HTML 中,从而避免使用 src 标记。

我们可以使用以下代码来在 WebView 中加载一个 data URI:

String data = "<html><head></head><body><img src=\"data:image/png;base64,iVBORw0KG...\"/></body></html>";
webView.loadData(data, "text/html", "base64");

在这个示例中,我们将一个 base64 编码的 PNG 图像嵌入到了 HTML 中。

3. 禁用混合内容

如果我们的网页同时包含 HTTP 和 HTTPS 协议的内容,WebView 可能会禁止加载这些内容,导致图片无法正常显示。

为了解决这个问题,我们可以禁用 WebView 的混合内容检测。我们可以在代码中调用以下方法来禁用混合内容检测:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}

这将允许 WebView 加载 HTTP 和 HTTPS 协议的内容。

结论

在 WebView 中,图像的 src 标记可能会不起作用。我们可以通过开启 WebView 的本地文件访问权限,使用 data 协议,或禁用混合内容来解决这个问题。