Android bridge for sending messages between Java and JavaScript
- In your
build.gradle
:
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.github.nanjingboy:JsBridgeWebView:1.3.2'
}
- Add JsBridgeWebView in your layout file
<me.tom.jsbridgewebview.JsBridgeWebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
- In your activity file
JsBridgeWebView webView = (JsBridgeWebView) findViewById(R.id.webView);
/**
* register java handler
*/
webView.registerHandler("callNative", new JsBridgeNativeHandler() {
@Override
public void handler(Object data, JsBridgeNativeCallBack callBack) {
Log.d("Request from JavaScript:", data.toString());
try {
JSONObject response = new JSONObject();
response.put("message", "Response from Java");
callBack.onCallback(response);
} catch (JSONException e) {
}
}
});
/**
* call javaScript handler
*/
JSONObject data = new JSONObject();
data.put("message", "Request from Java");
webView.callHandler("callJavaScript", data, new JsBridgeJsCallbackHandler() {
@Override
public void handler(Object data) {
Log.d("Response from JavaScript:", data.toString());
}
});
- In your javaScript file
function setupJsBridgeWebView(callback) {
if (window.jsBridgeWebView) {
callback(window.jsBridgeWebView);
} else {
document.addEventListener(
'jsBridgeWebViewReady',
function() {
callback(window.jsBridgeWebView);
},
false
);
}
};
/**
* register javaScript handler
*/
setupJsBridgeWebView(function(bridge) {
bridge.registerHandler("callJavaScript", function(data, callback) {
alert(JSON.stringify(data));
callback({"message": "Response from JavaScript"});
});
});
/**
* call java handler
*/
setupJsBridgeWebView(function(bridge) {
bridge.callHandler("callNative", {"message": "Request from JavaScript"}, function(response) {
alert(JSON.stringify(response));
});
});
MIT