WebView bağlantısı varsayılan tarayıcıyı aç'ı tıklayın


112

Şu anda bir web görünümü yükleyen bir uygulamam var ve tüm tıklamalar uygulama içinde tutuluyor. Yapmak istediğim şey, uygulama içinde belirli bir bağlantıya tıklandığında , örneğin http://www.google.com varsayılan tarayıcıyı açar. Herhangi birinin bir fikri varsa lütfen bana bildirin!

Yanıtlar:


193

Bugün de aynısını yapmak zorundaydım ve StackOverflow'da başka birinin ihtiyaç duyması durumunda burada paylaşmak istediğim çok faydalı bir cevap buldum.

Kaynak ( sven'den )

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
bu cevap bana çok yardımcı oldu! Teşekkürler!
Android-Droid

7
URL göreli ise ("http: //" ile başlamıyorsa) uygulama içinde açılacağını unutmayın. Bundan kaçınmak için her zaman doğruya dönün ve göreli url bağlantılarının hiçbir şey yapmamasını sağlayın.
Johan S

3
Önekteki rtsp, https ve benzeri diğer protokolleri kontrol etmelisiniz. Bağlantıların bir medyayı açması amaçlanıyorsa, cihazın medya oynatıcısına yeniden yönlendirilmelidir. Protokol öneki yoksa, tanımlayın ve sağlayın.
Abhinav Saxena

Aynen, aradığım şey. Teşekkürler
Sudarshan

2
shouldOverrideUrlLoading(WebView view, String url)API 24'te kullanımdan kaldırıldığını unutmayın . Bu yanıtı kontrol edin .
Mateus Gondim

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

bu kodu eklemenize gerek yok

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

bunun yerine aşağıdaki d kodunu kullanmanız gerekir

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

bunun için Intent'i kullanabilirsiniz:

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

11
Intent.ACTION_VIEW
rajh2504

10

Sadece aşağıdaki satırı eklemeniz gerekir

yourWebViewName.setWebViewClient(new WebViewClient());

Resmi belgeler için bunu kontrol edin .


6

Bunun için bir Amaç kullanabilirsiniz:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.