Android WebViewClient проблема - PullRequest
1 голос
/ 10 июня 2010

Я определил закрытый класс, который расширяет WebViewClient и настроил клиент моего WebView на экземпляр этого класса (webView01.setWebViewClient (new Callback ());).

Определение класса выглядит следующим образом:

private class Callback extends WebViewClient {
    public void onLoadResource (WebView view, String url) {
    }
    public void onPageStarted (WebView view, String url, Bitmap favicon) {
    }
    public void onPageFinished (WebView view, String url) {
        Animation anim = AnimationUtils.loadAnimation(MyNews.this, R.anim.webviewanim);
        view.startAnimation(anim);
    }
    public void onReceivedError (WebView view, int errorCode, String description, String failingUrl) {
    }   
    public boolean shouldOverrideUrlLoading (WebView view, String url) {
        Log.e("loading url", url);
        return false;
    }
}

Моя проблема в том, что onPageFinished определенно вызывается, но shouldOverrideUrlLoading никогда не вызывается.

Что я здесь не так делаю?

6/13/2010

Немного больше информации.

Я загружаю начальную страницу из строки (webView01.loadDataWithBaseURL ("fake: // fake", myHTML, "text / html", "UTF-8", null); ).

Страница загружается (и имеется несколько вызовов onLoadResource), и onPageFinished вызывается при завершении загрузки страницы.

Когда пользователь нажимает на ссылку «Якорь» на странице, вместо вызова shouldOverrideUrlLoading вызывается onLoadResource.

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

1 Ответ

1 голос
/ 03 февраля 2011

Из того, что я показывал в webview и до сих пор, shouldOverrideUrlLoading () не вызывается при вызове webview.load ("website"), но если этот сайт имеет перенаправление на другой, он работает.Поэтому обходной путь заключается в том, чтобы делать то, что вы хотите, когда вы вызываете webview.load («веб-сайт») (например, вызывая функцию, которая записывает в журнал Log.e («загрузка URL-адреса», URL-адрес)), поскольку вы уже знаете,URL-адрес и что нужно сделать, shouldOverrideUrlLoading () только перехватывает запросы, отправленные из веб-просмотра самостоятельно.

Надеюсь, я был полезен.

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