web-dev-qa-db-fra.com

Ouvrir des liens externes dans le navigateur avec Android webview

J'ai ce code, mais pas parce qu'il fonctionne, il continue de s'ouvrir dans la vue Web et ce que je veux, c'est que les liens n'appartiennent pas à mon site Web ouvert dans votre navigateur par défaut. Une idée? Merci

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")){
                view.loadUrl(url);
                return true;
            }else{
                return super.shouldOverrideUrlLoading(view, url);
            }

            }
        }
32
Jaumesv

Le problème est que vous devez envoyer un Intent au navigateur Web par défaut pour ouvrir le lien. Ce que vous faites, c'est simplement appeler une méthode différente dans votre Webview pour gérer le lien. Chaque fois que vous souhaitez qu'une autre application gère quelque chose, vous devez utiliser Intents. Essayez plutôt ce code.

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")) {
                view.loadUrl(url);
              } else {
                Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(i);
              }
              return true;
            }
        }
76
onit

Depuis le niveau API 24 shouldOverrideUrlLoading(WebView view, String url) est obsolète.

Solution à jour:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
            view.getContext().startActivity(intent);
            return true;
        }
    });
12
Hativ

Voici une solution très douce et courte

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    context.startActivity(i);
    return true;
}
4
Anand Savjani