[android] WebViewからローカル画像を参照する

Standard

これも大人の事象がないと使わなそうだけど。
プログラム内でhtml文字列を生成して、WebView#loadData(html, “text/html”, “UTF-8″) とかやりたいときに、

String html = "<!DOCTYPE html><html><head><title>Sample</title></head><body>" +
"<img src\"PATH_TO_LOCAL_IMAGE\"></body></html>";

って感じでimgタグのsrcにAPP_ROOT/res/drawable/ 配下の画像を使いたいとかそんな。APP_ROOT/assets/ 配下にhtmlファイルを作ってやれば普通に相対パスでAPP_ROOT/assets/img/ 以下を参照できるんだけど、そうもいかないとき。(html文字列内のjavascriptの中に端末情報を埋め込まないといけないとか)
 
 
解決策はWebView#loadDataWithBaseURLの第一引数に参照したいディレクトリのURIを指定する。です。APP_ROOT/res/drawable/unbaba.pngって画像を指定するとしたらこう。

String html = "<!DOCTYPE html><html><head><title>Sample</title></head><body>" +
"<img src\"unbaba.png\"></body></html>";
webView.loadDataWithBaseURL("file:///android_res/drawable/", html, "text/html", "UTF-8", null);

 
ドキュメントをちゃんと読みましょうっていうお話。
 
 
参考:http://remotedroid.net/blog/2011/01/14/referencing-drawables-in-html-in-androids-webview/

Facebook comments:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>