Android WebView - 点击

时间:2016-09-01 07:20:45

标签: android android-webview

我想在Android上创建简单的儿童安全浏览器,我想在加载之前检查每个网址:https://www.mywot.com/wiki/API。但有时点击url后会启动无限循环加载此链接。 我试着像这样覆盖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);
}

你可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

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