Android WebView与JavaScript交互详解

Android 里的 WebView 和 JavaScript 打交道,算是挺常见的事儿了。是你在做混合 App,或者只是想加载个网页,结果还得让页面能跟原生互通,这时候用好 WebView 的交互功能就挺关键。本文讲得比较清楚,基本原理、代码示例、安全坑点都覆盖到了,适合快速上手,避免踩坑。

WebView 的交互能力主要靠两个核心方法:addJavascriptInterface()evaluateJavascript()。前者让 JS 能调 Java,后者让 Java 能发起 JS 代码。你要是之前没接触过,光这两招就够用了。

@JavascriptInterface注解是关键点,没这个注解,JS 调用 Java 方法会直接失效。用起来也不难,写个类挂个方法,加上注解,再把它扔给webView.addJavascriptInterface(),JS 端就能通过window.android.xxx()来用了。

如果你想让 Android 这边主动控制网页,比如触发个 JS 方法,可以用evaluateJavascript()。它不仅能跑 JS,还能回调拿到 JS 那边的返回值。适合做双向通信,像你想拿个表单数据、执行个逻辑啥的,还挺方便。

安全问题可不能忽视。Android 4.2 后,JS 交互默认加了不少限制,主要是为了防 XSS 攻击。所以你用了@JavascriptInterface,就得保证方法不要暴露敏感逻辑,WebView 加载的内容也要可信。

异步交互方面,虽然evaluateJavascript()本身是异步的,但如果要搞得更灵活,比如多轮对话、回调事件,建议研究下postMessage机制。它可以配合事件监听,做出比较复杂的交互逻辑。

放点扩展阅读的链接,想进一步研究的可以看看:

如果你正在搞 H5 容器,或者 App 里嵌了不少网页,这篇文章值得收藏。调试方便,代码也不绕,看完就能上手。

zip 文件大小:124.24KB