WebView-Link Klicken Sie auf Standardbrowser öffnen


112

Im Moment habe ich eine App, die eine Webansicht lädt und alle Klicks in der App behalten. Was ich tun möchte, ist, wenn ein bestimmter Link, z. B. http://www.google.com, in der App angeklickt wird, in der der Standardbrowser geöffnet wird. Wenn jemand Ideen hat, lass es mich wissen!

Antworten:


193

Ich musste heute das Gleiche tun und habe auf StackOverflow eine sehr nützliche Antwort gefunden, die ich hier teilen möchte, falls jemand anderes sie benötigt.

Quelle (von 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
Diese Antwort hat mir sehr geholfen! Vielen Dank!
Android-Droid

7
Beachten Sie, dass die URL, wenn sie relativ ist (nicht mit "http: //" beginnt), in der App geöffnet wird. Um dies zu vermeiden, geben Sie immer true zurück und lassen Sie relative URL-Links nichts tun.
Johan S

3
Sie sollten im Präfix nach anderen Protokollen wie rtsp, https usw. suchen. Wenn die Links ein Medium öffnen sollen, sollte es zum Media Player des Geräts umgeleitet werden. Wenn es kein Protokollpräfix gibt, identifizieren Sie eines und geben Sie eines an.
Abhinav Saxena

Genau das, wonach ich suche. Danke
Sudarshan

2
Beachten Sie, dass dies shouldOverrideUrlLoading(WebView view, String url)in API 24 veraltet ist. Überprüfen Sie diese Antwort .
Mateus Gondim

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

Sie müssen diesen Code nicht einschließen

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

Stattdessen müssen Sie den folgenden Code verwenden

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

Sie können Intent dafür verwenden:

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

11
Sie sollten Intent.ACTION_VIEW
rajh2504

10

Sie müssen nur die folgende Zeile hinzufügen

yourWebViewName.setWebViewClient(new WebViewClient());

Überprüfen Sie dies für offizielle Dokumentation.


6

Sie können hierfür eine Absicht verwenden:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.