Посилання 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-посилання нічого не робити.
Йохан S

3
Ви повинні перевірити наявність інших протоколів у префіксі, таких як rtsp, https тощо. Якщо посилання призначені для відкриття носія, його слід переспрямувати на медіаплеєр пристрою. Якщо префіксу протоколу немає, то ідентифікуйте та введіть його.
Абхінав Саксена

Точно, що я шукаю. Спасибі
Сударшан

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 browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);

11
ви повинні використовувати Intent.ACTION_VIEW
rajh2504

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.