Edited at

Androidのwebviewで踏んだAタグのリンクへのフック処理

More than 1 year has passed since last update.


概要

Androidのwebviewで、

Aタグ踏んだときに、

Aタグ指定のURLへ行くのでなく、

指定したURLへ遷移させたい


環境

Android Studio 3.1

Android 6と7.1.1

Kotlin


結論

shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean

を使えば、全てのOSバージョンで呼ばれる。


test.kt

            override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {

println("URLに遷移しようとしています。::" + url + "\n\n")

if(url!!.contains("image")){
//URLに"image"文字が含まれているとき
view?.loadUrl("https://sakudev1.sysken.tokyo")//遷移
return true
}

return super.shouldOverrideUrlLoading(view, url)
}



考察とか

override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {

これは、Android7以上でよばれる。

しかし、Android7以上でも

            override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean

がよばれる。

OSバージョン分岐すればよいが、めんどい。分けるべきだろうか?

Androidの対応はどうすればよいのか、どれが普通なのか?


参考文献

https://ja.stackoverflow.com/questions/12879/webview%E3%81%A7%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%82%92%E3%83%95%E3%83%83%E3%82%AF%E3%81%97%E3%81%A6%E5%BC%B7%E5%88%B6%E7%9A%84%E3%81%AB%E4%BB%BB%E6%84%8F%E3%81%AEurl%E3%81%AB%E9%81%B7%E7%A7%BB%E3%81%95%E3%81%9B%E3%81%9F%E3%81%84

https://stackoverflow.com/questions/36484074/is-shouldoverrideurlloading-really-deprecated-what-can-i-use-instead