WebView 內部歷史棧導致 back 鍵逐級後退,需攔截:
webView.setOnKeyListener((v, keyCode, event) -> {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
String url = webView.getUrl();
if (url != null && url.contains("page2")) { // 內層頁面特徵
webView.loadUrl("page1_url"); // 或 webView.goBackOrForward(-N)
return true; // 消費事件
}
}
return false;
});
核心:根據當前 URL 判斷是否為內層頁,是則強制跳轉頂層頁,否則交給系統默認處理(退出 Activity)。