Android の webview でページを表示しているときにtel:
やmail:
で始まるリンクを踏んだ時に、特になんの設定もしていないと ERR_UNKNOWN_URL_SCHEME
のエラーページに飛ばされます。
Webpage not available
net::ERR_UNKNOWN_URL_SCHEME
修正方法
WebViewClient
の shouldOverrideUrlLoading
() を override し、その中に記述していきます。対応する Intent
を使うことで対応する外部アプリケーションを呼び出すことができます。
tel:
…ACTION_DIAL
mailto:
…ACTION_SENDTO
をそれぞれ使います。
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
val intent: Intent
if (url == null || url.startsWith("http://") || url.startsWith("https://")) {
return false;
} else {
// tel
if (url.startsWith("tel:")) {
intent = Intent(Intent.ACTION_DIAL, Uri.parse(url))
startActivity(intent)
view.reload()
return true
}
// mailto
if (url.startsWith("mailto:")) {
intent = Intent(Intent.ACTION_SENDTO, Uri.parse(url))
startActivity(intent)
webView.reload()
return true
}
}
}