[Android]loadDataWithBaseURLでローカルファイルの画像を表示する

めっちゃ詰まったけど、原因はすごくしょうもなかったのでメモ。

==確認環境==
AndroidStudio 1.5.1
Android 6.0.1(API23)

==やりたいこと==
ローカルファイル領域に配置したHTMLをWebViewに表示する。
ここで、同じくローカルファイル領域に配置したIMGも表示したい。

~ファイル構造~
com.pokete.aaaaa
├files
│└html
│ ├index.html
│ └pic.png
:

こんな感じで配置したfiles/html/index.htmlには、「img src=”pic.png”」みたいな感じでIMGタグが書いてある。

==完成形==

// String html <- index.htmlを読みこんでそのままポーイしたもの
WebView wView = (WebView)view.findViewById(R.id.wv);

wView.loadDataWithBaseURL("file://" + getFilesDir().getPath() + "/html/", html, "text/html", "UTF8", null);

ミソは第一引数のbaseURL、このURLを基準にHTML中の相対パスを解決しに行く。

というのは書いてあるサイトもあるけれど、Androidを思いつき手あたり次第独学で勉強したので、「file://」を先頭につけなければならないのは盲点だった

なんかもっとスマートな書き方があるのかもしれないけれど、とりあえず解決したのでこれでいいか。

という自分用のメモ記事でした。

コメントを残す

メールアドレスが公開されることはありません。