Подтвердить что ты не робот

Откройте внешние ссылки в браузере с веб-браузером Android

У меня есть этот код, но не потому, что он работает, он продолжает открываться в webview, и я хочу, чтобы ссылки не принадлежали моему веб-сайту открытым в вашем браузере по умолчанию. Есть идеи? спасибо

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")){
                view.loadUrl(url);
                return true;
            }else{
                return super.shouldOverrideUrlLoading(view, url);
            }

            }
        }
4b9b3361

Ответ 1

Проблема заключается в том, что вам нужно отправить Intent в веб-браузер по умолчанию, чтобы открыть ссылку. То, что вы делаете, это просто вызвать другой метод в вашем веб-браузере для обработки ссылки. Всякий раз, когда вы хотите, чтобы другое приложение обрабатывало что-то, вам нужно использовать Intents. Вместо этого попробуйте использовать этот код.

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")) {
                view.loadUrl(url);
              } else {
                Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(i);
              }
              return true;
            }
        }

Ответ 2

Поскольку уровень API 24 shouldOverrideUrlLoading(WebView view, String url) устарел.

Современное решение:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
            view.getContext().startActivity(intent);
            return true;
        }
    });

Ответ 3

Вот очень сладкое и короткое решение

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    context.startActivity(i);
    return true;
}

Ответ 4

Ниже у меня очень простое решение.

Для примера загрузите facebook.com на веб-просмотр и весь другой URL-адрес в браузере →

- Настройка onCreate

webView.loadUrl("http://m.facebook.com");
    webView.setWebViewClient(new MyAppWebViewClient());

Сделайте внутренний класс.

Открытый класс MyAppWebViewClient расширяет WebViewClient {

// handling external links as intents
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    if( Uri.parse(url).getHost().endsWith("facebook.com") ) {
        return false;
    }

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    view.getContext().startActivity(intent);
    return true;
}

}

Ответ 5

Вопрос новичка: куда мне поместить этот код?

    @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(i);
return true;

}

Я получаю много протестов в Android-студии. возможно, нужно добавить дополнительный код?

Ответ 6

 webView.setWebViewClient(new WebViewClient()   {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

                if((String.valueOf(request.getUrl())).contains("paramedya.com.tr")) {
                    view.loadUrl(String.valueOf(request.getUrl()));
                } else {
                    Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
                    view.getContext().startActivity(intent);
                }

                return true;
            }
        });