WebView.copyBackForwardList

WebView.copyBackForwardListで、WebViewが生成されてから、ロードしたURLの一覧(BackForwardList)を取得できる。
(これは通算の履歴ではなく、これまでロードしたURLがスタック上に積み重なっていく。そのため、戻る度に、戻る前のURLは一覧から消える。(正確には消える場合がある。))

WebView  |  Android Developers

上半分をWebView、下半分をListViewとして、そこにページがロードされるたびにBackForwardListを表示する。

CustomWebViewClient.javaで、

onPageFinishedで、view.copyBackForwardListでbfListを取得し、bfList.getItemAtIndex(i).getUrl()で取得したURLをlistitems[i].urlに入れていく。

f:id:BG1:20180517110719p:plain

ロード前は無い。
まずトップへ行く。

f:id:BG1:20180517110848p:plain

トップがロードされると、リストに追加されてる。

次にスポナビ

f:id:BG1:20180517111256p:plain

スポナビが追加されてる。
バックメニューなどで戻ると、

f:id:BG1:20180517111451p:plain

実際にはスポナビは消えてないが、このスポナビのURLは事実上消えたも同然である。
なぜなら、このあとトップから路線情報に行くと、

f:id:BG1:20180517111731p:plain

トップの次は路線情報になるため。
(この辺の動作はよくわからないが、スタック上に積みあがっていくことは確か。)

Sample/android/WebView/copyBackForwardList/src/WebView at master · bg1bgst333/Sample · GitHub