リモート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を使用する場合は、ローカルリソースを確認してください。アセットフォルダー内のjavascriptは、HTMLではfile:///として参照されます(私はこの作業に何時間も費やしました)