温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

安卓webview如何监听返回键

发布时间:2026-09-20 08:03:05 来源:亿速云 阅读:117 作者:小樊 栏目:移动开发

在 Android WebView 中,“监听返回键”通常有两种场景:

  1. 监听手机物理返回键(Activity 返回键)
  2. 监听网页内部的返回(如 H5 路由返回)

下面分别说明。


一、监听 Android 物理返回键(Activity 返回键)

方式一:重写 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);
}

二、网页内部“返回键”逻辑(H5 控制)

1️⃣ H5 自己监听(推荐)

前端 JS 监听:

window.addEventListener("popstate", function () {
    // 返回逻辑
});

或:

history.pushState(null, null, location.href);
window.onpopstate = function () {
    // 返回操作
};

2️⃣ Android 与 H5 通信(JS Bridge)

Android 端:

webView.addJavascriptInterface(new Object() {
    @JavascriptInterface
    public void onBack() {
        // 处理返回
    }
}, "Android");

H5 端:

window.Android.onBack();

三、常见坑点 ⚠️

  1. WebView 不自动处理返回
    • 必须手动 canGoBack() + goBack()
  2. 返回键直接退出 App
    • 没判断 canGoBack()
  3. H5 路由返回失效
    • 没使用 history.pushState

四、完整示例(最常用)

public 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”,可以告诉我,我给你对应方案。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手