1
私はAndroidで簡単な子供安全ブラウザを作成したいので、このapiでロードする前にすべてのURLをチェックしたいと考えています:https://www.mywot.com/wiki/APIしかし時にはURLをクリックした後、無限ループのリンクを開始します。ビュー内のAndroid WebView - クリック後の無限ループ
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);
}
は、あなたは私がこれをしてください修正するのを助けることができる 私はこのようなshouldOverrideUrlLoading上書きしてみては?
を呼び出すと、 'loadPageByUrl'を呼び出す' loadPageByUrl'を呼び出します。 – Danh
@Danhと私はそれをどのように修正できますか? – shmakova
私はAndroidに精通していないので、正しい答えを教えてもらえません。デバッガを使用するか、そこからチュートリアルを探してみてください – Danh