/** * Get a historical list of webview * @param webView * @return */ public static WebBackForwardList getHistoricalList(WebView webView) { return webView.copyBackForwardList(); }
@Override public void onBackPressed() { if (mWebView.canGoBack() && mWebView.copyBackForwardList().getSize() > 0 && !mWebView.getUrl().equals(mWebView.copyBackForwardList() .getItemAtIndex(0).getOriginalUrl())) { mWebView.goBack(); } else { finish(); } }
@Test public void shouldCopyBackForwardListWhenPopulated() { webView.loadUrl("foo1.bar"); webView.loadUrl("foo2.bar"); WebBackForwardList historyList = webView.copyBackForwardList(); assertThat(historyList.getSize()).isEqualTo(2); assertThat(historyList.getCurrentItem().getUrl()).isEqualTo("foo2.bar"); }
@Test public void shouldReturnCopyFromCopyBackForwardList() { WebBackForwardList historyList = webView.copyBackForwardList(); // Adding history after copying should not affect the copy. webView.loadUrl("foo1.bar"); webView.loadUrl("foo2.bar"); assertThat(historyList.getSize()).isEqualTo(0); assertThat(historyList.getCurrentIndex()).isEqualTo(-1); assertThat(historyList.getCurrentItem()).isNull(); }
@Test public void shouldCopyBackForwardListWhenEmpty() { WebBackForwardList historyList = webView.copyBackForwardList(); assertThat(historyList.getSize()).isEqualTo(0); assertThat(historyList.getCurrentIndex()).isEqualTo(-1); assertThat(historyList.getCurrentItem()).isNull(); }
public void onPageFinished(WebView view) { if (!mIsOnReceivedTitle && mWebChromeClient != null) { WebBackForwardList list = null; try { list = view.copyBackForwardList(); } catch (NullPointerException e) { if (LogUtils.isDebug()) { e.printStackTrace(); } } if (list != null && list.getSize() > 0 && list.getCurrentIndex() >= 0 && list.getItemAtIndex(list.getCurrentIndex()) != null) { String previousTitle = list.getItemAtIndex(list.getCurrentIndex()).getTitle(); mWebChromeClient.onReceivedTitle(view, previousTitle); } } }
public class BackButtonListener implements View.OnKeyListener { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { WebView webView = (WebView) v; switch (keyCode) { case KeyEvent.KEYCODE_BACK: WebBackForwardList backstack = webView.copyBackForwardList(); int currentIndex = backstack.getCurrentIndex(); int i = -1; while (webView.canGoBackOrForward(i)) { if (!backstack.getItemAtIndex(currentIndex + i).getUrl().equals("about:blank")) { webView.goBackOrForward(i); return true; } i--; } webView.goBack(); return true; } } return false; } }