来自资产的Android WebView JavaScript

Android WebView JavaScript from assets

本文关键字:Android WebView JavaScript      更新时间:2023-09-26

如何从assets文件夹(或任何本地资源)加载远程HTML页面上的JavaScript和图像?

答案:
1.您必须将HTML加载到字符串中:

private String readHtml(String remoteUrl) {
    String out = "";
    BufferedReader in = null;
    try {
        URL url = new URL(remoteUrl);
        in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            out += str;
        }
    } catch (MalformedURLException e) { 
    } catch (IOException e) { 
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return out;
}


2.使用基本URL:加载WebView

String html = readHtml("http://mydomain.com/my.html");
mWebView.loadDataWithBaseURL("file:///android_asset/", html, "text/html", "utf-8", "");

在这种特殊的情况下,您应该将要在页面上使用的所有.js文件都放在项目的"assets"文件夹下。例如:

/MyProject/assets/jquery.min.js


3.在您的远程html页面中,您必须加载驻留在应用程序中的.js和.css文件,如:

<script src="file:///android_asset/jquery.min.js" type="text/javascript"></script>

这同样适用于所有其他本地资源,如图像等。它们的路径必须从开始

file:///android_asset/

WebView将首先加载作为字符串提供的原始HTML,然后选择.js、.css和其他本地资源,然后加载远程内容。

如果动态创建HTML,然后使用loadDataWithBaseURL,请确保HTML中的任何本地资源(例如资产文件夹中的javascript)都被引用为文件:///(我花了几个小时解决了这个问题)