Nhấp vào liên kết WebView để mở trình duyệt mặc định


112

Hiện tại, tôi có một ứng dụng tải chế độ xem web và tất cả các lần nhấp đều được giữ trong ứng dụng. Điều tôi muốn làm là khi một liên kết nhất định, chẳng hạn như http://www.google.com được nhấp trong ứng dụng, nó sẽ mở trình duyệt mặc định. Nếu ai có một số ý tưởng xin vui lòng cho tôi biết!

Câu trả lời:


193

Tôi đã phải làm điều tương tự ngày hôm nay và tôi đã tìm thấy một câu trả lời rất hữu ích trên StackOverflow mà tôi muốn chia sẻ ở đây trong trường hợp người khác cần.

Nguồn (từ 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
câu trả lời này đã giúp tôi rất nhiều! Cảm ơn!
Android-Droid

7
Lưu ý rằng nếu url là tương đối, (không bắt đầu bằng "http: //") thì nó sẽ mở bên trong ứng dụng. Để tránh điều này luôn trả về true và làm cho các liên kết url tương đối không làm gì cả.
Johan S

3
Bạn nên kiểm tra các giao thức khác trong tiền tố như rtsp, https, v.v. Nếu các liên kết nhằm mục đích mở một phương tiện, nó phải được chuyển hướng đến trình phát phương tiện của thiết bị. Nếu không có tiền tố giao thức, hãy xác định và cung cấp một tiền tố.
Abhinav Saxena

Chính xác, những gì tôi đang tìm kiếm. Cảm ơn
Sudarshan

2
Lưu ý rằng shouldOverrideUrlLoading(WebView view, String url)không được dùng trong API 24. Hãy kiểm tra câu trả lời này .
Mateus Gondim

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

bạn không cần phải bao gồm mã này

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

thay vào đó bạn cần sử dụng mã d dưới đây

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

bạn có thể sử dụng Intent cho việc này:

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

11
bạn nên sử dụng Intent.ACTION_VIEW
rajh2504

10

Bạn chỉ cần thêm dòng sau

yourWebViewName.setWebViewClient(new WebViewClient());

Kiểm tra điều này để có tài liệu chính thức.


6

Bạn có thể sử dụng Intent cho việc này:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.