Получить последний загруженный url webview без выполнения webView.goBack () в Android

Я хочу зарегистрировать url-адрес истории или последний загруженный url-адрес без ручного хранения URL-адресов истории. Это возможно?

2 ответов


нашел ответ в документах ...

WebBackForwardList mWebBackForwardList = mWebView.copyBackForwardList();
String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()-1).getUrl();

вы можете поддерживать стек (список) посещенных URL-адресов, добавляя их в onPageFinished () и удаляя их при резервном копировании пользователя.

то есть

private List<String> urls = new ArrayList<String>();

        @Override
    public final void onPageFinished(final WebView view,final String url) {
                     urls.add(0, url);
        super.onPageFinished(view, url);
    }

а затем ловушка задней клавиши в activity:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {

    case KeyEvent.KEYCODE_BACK:
                    if (urls.size() == 1) {
            finish();
            return true;
        } else if (urls.size() > 1) {
            urls.remove(0);

            // load up the previous url
            loadUrl(urls.get(0));

            return true;
        } else
                            return false;
    default:
        return super.onKeyDown(keyCode, event);
    }
}