Android 与 JS交互实际上是通过 WebView
互相调用方法:
- Android`去调用 JS的代码;
- JS去调用 Android 的代码。
一、JS 调用 Android 方法
方法一:通过 WebView 的 addJavascriptInterface() 进行对象映射
优点:使用简单,仅将Android对象和JS对象映射即可
缺点:存在漏洞问题
1)允许 WebView 加载 JS
webView.getSettings().setJavaScriptEnabled(true);
2)编写 JS 接口
public class JsInterface {
private static final String TAG = "JsInterface";
private JsBridge jsBridge;
public JsInterface(JsBridge jsBridge) {
this.jsBridge = jsBridge;
}
/**
* 这个方法由 JS 调用, 不在主线程执行
* @param value
*/
@JavascriptInterface
public void callAndroid(String value) {
Log.i(TAG, "value = " + value);
jsBridge.setTextValue(value);
}
}
3)给 WebView 添加 JS 接口
`webView.addJavascriptInterface(new JsInterface(this), "launcher");// 此处的 launcher 可以自定义,最终是 JS 中要使用的对象`
4)JS 代码中调用 Java 方法
if (window.launcher){ // 判断 launcher 对象是否存在
// 此处的 launcher 要和 第3步中定义的 launcher 保持一致
// JS 调用 Android 的方法
launcher.callAndroid(str);
}else{
alert("launcher not found!");
}