Android-WebView中加载本地html的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-WebView中加载本地html的方法相关的知识,希望对你有一定的参考价值。

参考技术A android在webview下加载本地网页的方式

首先,在src目录下面新建一个assets目录,之后新建一个web资源的根目录,如下图所示:

这里的Web目 录名可以任意起,但是必须有这一层,否则可能拿不到资源

之后再webview中加载资源:

webView.loadUrl("file:///android_asset/web/index.html");

//注意一点,目录名是assets,资源路径中是asset

在 WebView 中加载页面之前,用本地 Android 资源替换 HTML 文档的图像

【中文标题】在 WebView 中加载页面之前,用本地 Android 资源替换 HTML 文档的图像【英文标题】:Replace images of a HTML document with local Android resources, before loading the page in a WebView 【发布时间】: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。 问题是我不想下载图片,因为我已经有了它们,我不希望用户使用他的移动数据。 【参考方案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);

【讨论】:

以上是关于Android-WebView中加载本地html的方法的主要内容,如果未能解决你的问题,请参考以下文章

Android-WebView与本地HTML(播放视频)

在 NativeScript 应用程序中加载本地 HTML/JavaScript/CSS

在 WebView 中加载页面之前,用本地 Android 资源替换 HTML 文档的图像

在webview android中加载本地html文件

在webView android中加载本地html文件

无法在 swift 4 中加载本地 html 文件