初始化WebView。
mWebView = root.findViewById(R.id.web_view);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JsBridge(), "javaObjectA");
JsBridge.java
被JavaScript調(diào)用的方法要加上@JavascriptInterface
public class JsBridge {
@JavascriptInterface
public void javaMethod(int value) {
System.out.println("java method: " + value);
}
}
Java調(diào)用JavaScript
Java代碼
mWebView.loadUrl("javascript:window.javaObjectA.javaMethod(100);");
JavaScript調(diào)用Java
JavaScript代碼
window.javaObjectA.javaMethod(100);
WebView方法說明
WebView.addJavascriptInterface解釋
/**
* Injects the supplied Java object into this WebView. The object is
* injected into the JavaScript context of the main frame, using the
* supplied name. This allows the Java object's methods to be
* accessed from JavaScript.
* @param object the Java object to inject into this WebView's JavaScript
* context. Null values are ignored.
* @param name the name used to expose the object in JavaScript
*/
public void addJavascriptInterface(Object object, String name) {
checkThread();
mProvider.addJavascriptInterface(object, name);
}
addJavascriptInterface(Object object, String name)。
第一個參數(shù)是被注入到WebView中的java對象,JavaScript可以操作該對象有@JavascriptInterface的public方法。
第二個參數(shù)是java 類暴露給JavaScript的名字。mWebView.addJavascriptInterface(new JsBridge(), "javaObjectA");將new 出來的JsBridge對象注入到了WebView中,并命名為了JavaObjectA。JavaScript可以通過window.javaObjectA.javaMethod(100);調(diào)用該java對象的javaMethod()方法。