Android WebView «tel:» и mailto: ссылки показывают, что веб-страница не найдена

Я пытаюсь открыть ссылку tel: и mailto: от webview и получаю следующее сообщение:

Web Page Not Found tel:0000000000

Единственная работающая ссылка — это «http:» и «https».

Может кто-нибудь помочь мне?

     private class HelloWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView webview, String url)
    {
        webview.loadUrl(url);
        return true;
    }
}

@Override
public boolean onKeyDown(int KeyCode, KeyEvent event)
{
    if ((KeyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
    {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(KeyCode, event);
}

public boolean shouldOverrideUrlLoading(WebView webview, String url) {
    if (url.startsWith("tel:")) { 
            Intent intent = new Intent(Intent.ACTION_VIEW,
                    Uri.parse(url)); 
            startActivity(intent); 
    }else if(url.startsWith("http:") || url.startsWith("https:") || url.startsWith("mailto:")) {
        webview.loadUrl(url);
    }
    return false;
} 

}


person robert    schedule 15.06.2012    source источник
comment
Привет, Роберт, это может вам помочь: Android WebView «tel: ” ссылки показывают, что веб-страница не найдена   -  person Paresh Mayani    schedule 17.06.2012


Ответы (2)


Не вызывайте loadUrl(url);

   public boolean shouldOverrideUrlLoading(WebView webView, String url) {

     if (url.startsWith("tel:")) {
        Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse(url));
        activity.startActivity(intent);
    }
    else{
        webView.loadUrl(url);
    }
        return true; 
  }
person prince_sachdeva    schedule 14.11.2015

Попробуйте вернуть false в ветви tel: и mailto: if и else if.

Это должно работать.

person Tim    schedule 15.06.2012
comment
@ Тим Мессершмидт, я обновил код, работают только ссылки http, есть предложения? - person robert; 13.07.2012
comment
Вы обрабатываете Intent for tel: неправильно — это должно выглядеть так: Intentintent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); - person Tim; 13.07.2012
comment
@ Тим Мессершмидт К сожалению, даже это решение не работает - person robert; 13.07.2012
comment
Вы должны вернуть true, если вы обрабатываете намерение, и false, если нет. - person Tim; 13.07.2012