Android WebView - 点击后无限循环

Android WebView - Infinite loop after click

我想在 Android 上创建简单的儿童安全浏览器,我想在加载 api 之前检查每个 url:https://www.mywot.com/wiki/API。但有时在单击 url 后会开始无限循环加载此 link。 我尝试像这样重写 shouldOverrideUrlLoading:

private class BrowserWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            loadUrl(url);
            return true;
        }
    }
}

   private interface UrlCheckListener {
        void urlChecked(boolean isGood);
   }

   private void loadUrl(String query) {
            String safeUrl = UrlCheckerUtils.getSafeUrlFromQuery(query);
            checkUrlBeforeLoad(safeUrl, valid -> {
                if (isViewAttached()) {
                    if (valid) {
                        getView().loadPageByUrl(safeUrl);
                    } else {
                        getView().showError();
                    }
                }
            });
        }

        private void checkUrlBeforeLoad(String url, UrlCheckListener listener) {
            try {
                URI uri = new URI(url);
                String domain = uri.getHost() + "/";

                wotService.getLinkReputation(domain)
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(wotResponse -> listener.urlChecked(wotResponse.isSafe()));
            } catch (URISyntaxException e) {
                Timber.e(e, "Error while parsing url");
        }
    }

loadPageByUrl 在视图中:

@Override
public void loadPageByUrl(String url) {
    webView.loadUrl(url);
}

你能帮我解决这个问题吗?

错误在 String safeUrl = UrlCheckerUtils.getSafeUrlFromQuery(query); 我在其中创建了 String 的新对象。当我开始在 shouldOverrideUrlLoading 中使用 url 进行操作时,它会在没有无限重定向的情况下开始工作。