在 Android WebView 中,“监听返回键”通常有两种场景:
下面分别说明。
onBackPressed()(推荐,简单)@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack(); // 网页内返回
} else {
super.onBackPressed(); // 退出 Activity
}
}
✅ 适用于大多数 WebView 应用
dispatchKeyEvent(更底层)@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if (webView.canGoBack()) {
webView.goBack();
return true;
}
}
return super.dispatchKeyEvent(event);
}
前端 JS 监听:
window.addEventListener("popstate", function () {
// 返回逻辑
});
或:
history.pushState(null, null, location.href);
window.onpopstate = function () {
// 返回操作
};
Android 端:
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void onBack() {
// 处理返回
}
}, "Android");
H5 端:
window.Android.onBack();
canGoBack() + goBack()canGoBack()history.pushStatepublic class WebActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
webView = findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("https://example.com");
}
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
}
如果你是指 “H5 页面里点击返回按钮”、“AndroidX 返回手势”、或者 “Flutter WebView / React Native WebView”,可以告诉我,我给你对应方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。