Lien WebView cliquez sur ouvrir le navigateur par défaut


112

En ce moment, j'ai une application qui charge une vue Web et tous les clics sont conservés dans l'application. Ce que je voudrais faire, c'est lorsqu'un certain lien, par exemple, http://www.google.com est cliqué dans l'application, il ouvre le navigateur par défaut. Si quelqu'un a des idées, faites-le moi savoir!

Réponses:


193

J'ai dû faire la même chose aujourd'hui et j'ai trouvé une réponse très utile sur StackOverflow que je souhaite partager ici au cas où quelqu'un d'autre en aurait besoin.

Source (de sven )

webView.setWebViewClient(new WebViewClient(){
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) {
            view.getContext().startActivity(
                new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
});

3
cette réponse m'a beaucoup aidé! Merci!
Android-Droid le

7
Notez que si l'URL est relative, (ne commence pas par "http: //"), elle s'ouvrira dans l'application. Pour éviter cela, retournez toujours true et faites en sorte que les liens URL relatifs ne fassent rien.
Johan S

3
Vous devriez vérifier les autres protocoles dans le préfixe comme rtsp, https et ainsi de suite. Si les liens sont destinés à ouvrir un média, il doit être redirigé vers le lecteur multimédia de l'appareil. S'il n'y a pas de préfixe de protocole, identifiez-en et fournissez-en un.
Abhinav Saxena

Exact, ce que je recherche. Merci
Sudarshan

2
Notez que shouldOverrideUrlLoading(WebView view, String url)c'est obsolète dans l'API 24. Vérifiez cette réponse .
Mateus Gondim

35
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);

vous n'êtes pas obligé d'inclure ce code

// webview.setWebViewClient(new WebViewClient());

au lieu de cela, vous devez utiliser le code ci-dessous

webview.setWebViewClient(new WebViewClient()
{
  public boolean shouldOverrideUrlLoading(WebView view, String url)
  {
    String url2="https://whatoplay.com/";
     // all links  with in ur site will be open inside the webview 
     //links that start ur domain example(http://www.example.com/)
    if (url != null && url.startsWith(url2)){
      return false;
    } 
     // all links that points outside the site will be open in a normal android browser
    else
    {
      view.getContext().startActivity(
      new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
      return true;
    }
  }
});

11

vous pouvez utiliser Intent pour cela:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);

11
vous devriez utiliser Intent.ACTION_VIEW
rajh2504

10

Il vous suffit d'ajouter la ligne suivante

yourWebViewName.setWebViewClient(new WebViewClient());

Vérifiez ceci pour la documentation officielle.


6

Vous pouvez utiliser une intention pour cela:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.