Android WebViewに直接HTMLを記述する


WebViewに対して、さらっと書き捨てのHTML等を直接記述出来ます。

val webView = findViewById<WebView>(R.id.web_view)
webView.loadData("<a href=\"https://www.google.com\">グーグル検索</a>", "text/html", "utf-8")
何が便利か?

クッションページが必要だけど、敢えてHTMLファイルとして作成するほどでもないケース。

私の場合、RecyclerViewの各ItemにWebViewを配置したのですが、WebViewがアクセスするURLにPDFファイルも含まれていた為、PDFへのURLの場合、クッションページを用いました。 例えば、以下のように記述すると書き捨てのaタグのクリックイベントが奪えるので、PDFファイルへのリンクを他のインテントに飛ばしたり出来ます。

if( url == PDFリンク ){
    webView.loadData("<a href=\"" + url +  "\">PDFファイルを確認</a>", "text/html", "utf-8")
    webView.webViewClient = object : WebViewClient(){
        override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
            return false
        }
    }
}else{
    webView.loadUrl( url )
}