来自资产的Android WebView JavaScript

我怎样才能让我的远程HTML页面上的JavaScript和图像从资源文件夹(或任何本地资源)加载?

Solutions Collecting From Web of "来自资产的Android WebView JavaScript"

回答:
1.您必须将HTML加载到string中:

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> 

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

 file:///android_asset/ 

一个WebView将首先加载你提供的原始HTML作为string,然后select.js,.css和其他本地资源,然后加载远程内容。

如果dynamic创build您的HTML,然后使用loadDataWithBaseURL请确保任何本地资源,例如您的资产文件夹中的JavaScript在HTML中被称为文件:/ / /(我花了几个小时的工作)