Не перехватывает перенаправление в shouldOverrideUrlLoading - PullRequest
0 голосов
/ 13 ноября 2018

Edit: Я обнаружил, что этот веб-сайт представляет собой одностраничный веб-сайт, и, вероятно, по этой причине я не уловил изменение URL-адреса, поэтому теперь мой вопрос: могу ли я узнать, что URL-адрес изменился на одностраничном веб-сайте?

У меня есть webView, который загружает веб-сайт. shouldOverrideUrlLoading вызывается только один раз, при первой загрузке страницы, но не тогда, когда она перенаправляется внутри сети.

Это код веб-клиента, который я использую:

private class WebViewClientServiceGuide extends MyWebViewClient {
private WebView wv;

public WebViewClientServiceGuide(WebView _wv) {
    wv = _wv;
    Log.d(TAG, "WebViewClientServiceGuide.ctor");
}

public void onLoadResource(WebView view, String url) {
    Log.d(TAG, "WebViewClientServiceGuide - onLoadResource: " + url);
    super.onLoadResource(view, url);
}

@Override
public void onPageFinished(WebView view, String url) {
    //Add history to history manager if needed
    Log.d(TAG, "WebViewClientServiceGuide - onPageFinished");
    super.onPageFinished(view,url);
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    Log.d(TAG, "WebViewClientServiceGuide - shouldOverrideUrlLoading(WebView view, WebResourceRequest request)");
    return super.shouldOverrideUrlLoading(view, request);
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Log.d(TAG, "WebViewClientServiceGuide - shouldOverrideUrlLoading");
    return false;
}
}

Допустим, я посетил эти страницы: page1, page2, page3, но перехватывает только page1 в shouldOverrideUrlLoading. Но когда я изучил историю веб-просмотра (copyBackForwardList), я увидел весь список (page1, page2, page3).

Почему это происходит? (Я пытался использовать другой веб-сайт и перехватывал там все страницы - я знаю, что разработчик веб-сайта должен это исправить, но я хочу знать, почему стек истории отличается от URL-адресов, которые я получаю на shouldOverrideUrlLoading)

Спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Нашел решение: я переопределил метод WebViewClient с именем doUpdateVisitedHistory, который получает URL, даже на одностраничном веб-сайте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...