Android 开发中集成一个 WebView 来显示网页非常普遍,有时需要处 理Java 与 JS 代码的交互。
Android 中 Java 与 JS 交互分两种:
- Java 调用 JS 代码
- JS 调用 Java 代码
Java 调用 JS:
- 通过 WebView 的 loadUrl 方法
mWebView.loadUrl("javascript:callJS()");
这种方法无法获取返回值
- 通过 WebView 的 evaluateJavaScript 方法
mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
//此处为 js 返回的结果
}
});
这种方法可以获取 JS 的返回值,但只能在 4.4 以上版本使用。 两种方法都必须在 WebView 所在线程调用
JS 调用 Java
- addJavaInterface 方法 该方法仅适合在 Android4.2 以上版本使用,其他版本存在安全漏洞
- 通过 WebView 的 shouldOverrideUrlLoading 方法
- 通过 WebView 的 onJsAlert()、onJsConfirm()、onJsPrompt() 方法回调拦截