赞
踩
这个开源库在 Java
和 JavaScript
之间架起了一座桥梁,它提供了从js调用java代码和从java调用js代码的安全便捷的方式。
repositories {
// ...
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.github.lzyzsd:jsbridge:1.0.4'
}
最新的版本号请查看开源库文档 https://github.com/lzyzsd/JsBridge
添加com.github.lzyzsd.jsbridge.BridgeWebView
到你的布局里,他是集成自原生的webview。
webView.registerHandler("submitFromWeb", new BridgeHandler() {
@Override
public void handler(String data, CallBackFunction function) {
Log.i(TAG, "handler = submitFromWeb, data from web = " + data);
function.onCallBack("submitFromWeb exe, response data from Java");
}
});
这里需要注意的是和前端工程师约定好调用的方法名。关于H5方面的使用,就不在这里赘述了,一般前端工程师会帮我们处理好。
JS调用回调交互方法
WebViewJavascriptBridge.callHandler(
'submitFromWeb'
, {'param': str1}
, function(responseData) {
document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
}
);
您可以在Java中设置一个默认的handler,这样js就可以在不分配handlerName的情况下向Java发送消息
webView.setDefaultHandler(new DefaultHandler());
window.WebViewJavascriptBridge.doSend(
data
, function(responseData) {
document.getElementById("show").innerHTML = "repsonseData from java, data = " + responseData
}
);
注册一个JavaScript handler function,让Java来调用
WebViewJavascriptBridge.registerHandler("functionInJs", function(data, responseCallback) {
document.getElementById("show").innerHTML = ("data from Java: = " + data);
var responseData = "Javascript Says Right back aka!";
responseCallback(responseData);
});
Java调用这个注册的js方法
webView.callHandler("functionInJs", new Gson().toJson(user), new CallBackFunction() {
@Override
public void onCallBack(String data) {
}
});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。