【Android】Webview で電話番号(tel:)やメール(mailto:)のリンクの時に ERR_UNKNOWN_URL_SCHEME が表示される

  • Android
  • Kotlin

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
        }
    }
}

参考