【问题标题】:Replace images of a HTML document with local Android resources, before loading the page in a WebView在 WebView 中加载页面之前,用本地 Android 资源替换 HTML 文档的图像
【发布时间】:2014-12-10 16:42:28
【问题描述】:

我知道出于安全原因,HTML 标准不再允许将本地资源作为图像加载到文档中。 无论如何,我发现如果我想在 WebView 中加载本地页面,我必须复制 android-asset 项目文件夹中的 html 文件。

如果我想使用混合方法怎么办? 我想从 uri 中获取 HTML 文档,用本地路径替换 img HTML 标记的 src 属性的值,然后在 WebView 中加载代码。

有一个像这样的 html 文档:

<hmtl>
    <head>
    </head>

    <body>
        <img src="http://URL-SITE/img/x.jpg">
    </body>
</hmtl>
  • 如何将http://URL-SITE/img替换为本地图片资源的路径 页面由 WebView 加载之前?

  • 我已经尝试将本地图像放入文件夹android-asset 并更改file:///android_asset/img/x.jpg 中的src 值,但没有成功。

【问题讨论】:

  • 您始终可以使用 &lt;img src="data:image/png;base64,..." /&gt; 语法将图像数据嵌入到 HTML 本身中
  • 您必须先使用http客户端获取页面的来源。然后解析 src 属性 urls 并用文本替换资产中文件的 urls。您的资产网址没问题。但是您必须将图片放在资产目录中。不在你命名的那个。最后将适配后的html源码交给webview。
  • 问题是我不想下载图片,因为我已经有了它们,我不希望用户使用他的移动数据。

标签: android html webview


【解决方案1】:

好的,谢谢 cmets。 问题是我使用了命令 loadData

String html ="<html> <head></head> "
              +" <body>  <img src=\"file:///android_asset/img/x.jpg\"> "
              +"</body> </html>"; 

myWebView.loadData(html, "text/html; charset=UTF-8", null);

而不是

myWebView.loadDataWithBaseURL(null, html, "text/html", "UTF-8", null);

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    相关资源
    最近更新 更多