Ссылка WebView щелкните открыть браузер по умолчанию


112

Прямо сейчас у меня есть приложение, которое загружает веб-просмотр, и все клики сохраняются в приложении. Что я хотел бы сделать, так это когда в приложении нажимается определенная ссылка, например http://www.google.com, открывается браузер по умолчанию. Если у кого-то есть идеи, дайте мне знать!

Ответы:


193

Сегодня я должен был сделать то же самое, и я нашел очень полезный ответ на StackOverflow, которым хочу поделиться здесь, если кому-то это понадобится.

Источник (от 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
этот ответ мне очень помог! Спасибо!
Android-Droid,

7
Обратите внимание: если URL-адрес является относительным (не начинается с «http: //»), он откроется внутри приложения. Чтобы избежать этого, всегда возвращайте истину и заставляйте относительные URL-ссылки ничего не делать.
Johan S

3
Вы должны проверить наличие других протоколов в префиксе, таких как rtsp, https и т. Д. Если ссылки предназначены для открытия мультимедиа, они должны быть перенаправлены на мультимедийный проигрыватель устройства. Если префикса протокола нет, укажите его и укажите.
Abhinav Saxena

Именно то, что я ищу. Спасибо
Сударшан

2
Обратите внимание, что shouldOverrideUrlLoading(WebView view, String url)это не рекомендуется в API 24. Отметьте этот ответ .
Матеус Гондим

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

вам не нужно включать этот код

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

вместо этого вам нужно использовать код d ниже

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

вы можете использовать для этого Intent:

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

11
вам следует использовать Intent.ACTION_VIEW
rajh2504 03

10

Вам нужно только добавить следующую строку

yourWebViewName.setWebViewClient(new WebViewClient());

Проверьте это для официальной документации.


6

Для этого можно использовать намерение:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.