Android webview — как пропустить URL?

#android #webview

#Android #webview

Вопрос:

У меня есть webview с пользовательским клиентом webview. Я перехватываю запросы с:

 @Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
    // ...
}
  

иногда я получаю информацию о пользовательских событиях из webview в виде ссылки:

xyz://сделай что-нибудь

Когда это произойдет, я хочу, чтобы webview проигнорировал это. Но ‘shouldInterceptRequest’ должен что-то возвращать, и когда я возвращаю ‘null’ вместо моей страницы, он показывает: ‘неизвестный URL xyz://do-something’. Как я могу с этим справиться? Как я могу перехватить ссылку, но отключить действие на стороне webview?

Ответ №1:

Вам просто нужно выполнить сравнение строк с сайта, на котором вы находитесь, и сайта, на который вы хотите перейти.

 public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            // This is my web site, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
  

Комментарии:

1. Я не могу использовать ‘public boolean shouldOverrideUrlLoading(веб-просмотр, строковый URL)’, это должен быть ‘public WebResourceResponse shouldInterceptRequest(веб-просмотр, строковый URL)’.