めっちゃ詰まったけど、原因はすごくしょうもなかったのでメモ。
確認環境
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://」を先頭につけなければならないのは盲点だった
なんかもっとスマートな書き方があるのかもしれないけれど、とりあえず解決したのでこれでいいか。
という自分用のメモ記事でした。
コメント