Tautan WebView klik buka browser default

112

Saat ini saya memiliki aplikasi yang memuat tampilan web dan semua klik disimpan di dalam aplikasi. Yang ingin saya lakukan adalah ketika tautan tertentu, misalnya, http://www.google.com diklik di dalam aplikasi itu membuka browser default. Jika ada yang punya ide tolong beri tahu saya!

Kyle
sumber

Jawaban:

193

Saya harus melakukan hal yang sama hari ini dan saya telah menemukan jawaban yang sangat berguna di StackOverflow yang ingin saya bagikan di sini jika orang lain membutuhkannya.

Sumber (dari 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;
        }
    }
});
Amokrane Chentir
sumber
3
jawaban ini sangat membantu saya! Terima kasih!
Android-Droid
7
Perhatikan bahwa jika urlnya relatif, (tidak dimulai dengan "http: //") maka url akan terbuka di dalam aplikasi. Untuk menghindarinya, selalu kembalikan true dan buat tautan url relatif tidak melakukan apa pun.
Johan S
3
Anda harus memeriksa protokol lain di awalan seperti rtsp, https, dan sebagainya. Jika tautan dimaksudkan untuk membuka media, itu harus dialihkan ke pemutar media perangkat. Jika tidak ada prefiks protokol, maka identifikasi dan berikan satu.
Abhinav Saxena
Tepat, apa yang saya cari. Terima kasih
Sudarshan
2
Perhatikan bahwa shouldOverrideUrlLoading(WebView view, String url)sudah usang dalam API 24. Periksa jawaban ini .
Mateus Gondim
35
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);

Anda tidak perlu memasukkan kode ini

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

sebagai gantinya kamu perlu menggunakan kode d di bawah ini

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;
    }
  }
});
Cristiana Chavez
sumber
11

Anda dapat menggunakan Intent untuk ini:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
Piyush
sumber
11
Anda harus menggunakan Intent.ACTION_VIEW
rajh2504
10

Anda hanya perlu menambahkan baris berikut

yourWebViewName.setWebViewClient(new WebViewClient());

Periksa ini untuk dokumentasi resmi.

b1programmer
sumber
6

Anda dapat menggunakan Intent untuk ini:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
BasavRaj
sumber