项目作者: kzhouyijin

项目描述 :
修改JsBridge,增加了success,fail,completed三种js回调函数.去掉了android主动调用js的逻辑
高级语言: Java
项目地址: git://github.com/kzhouyijin/JsBridge.git
创建时间: 2019-09-02T07:51:15Z
项目社区:https://github.com/kzhouyijin/JsBridge

开源协议:

下载


JsBridge


inspired and modified from this and wechat jsBridge file, with some bugs fix and feature enhancement.

This project make a bridge between Java and JavaScript.

It provides safe and convenient way to call Java code from js and call js code from java.

Use it in Java

add com.github.lzyzsd.jsbridge.BridgeWebView to your layout, it is inherited from WebView.

Register a Java handler function so that js can call

  1. webView.registerHandler("Toast", new BridgeHandler() {
  2. @Override
  3. public void handler(String data, CallBackFunction function) {
  4. Toast.makeText(MainActivity.this,"收到H5请求数据:"+data,Toast.LENGTH_SHORT).show();
  5. // function.onCallBackError("");
  6. // function.onCallBackSuccess("调用onError方法:"+data);
  7. function.onCallBackCompleted("app返回h5参数:"+data);
  8. }
  9. });

js can call this Java handler method by My.js

  1. function My() {
  2. function sendToNative(key, message, obj) {
  3. //call native method
  4. window.WebViewJavascriptBridge.callHandler(key, message, obj);
  5. }
  6. function buildBlueMessage(key, value) {
  7. var message = { "key": key, "value": value };
  8. return JSON.stringify(message);
  9. };
  10. this.Toast = function Toast(message,obj) {
  11. sendToNative("Toast", buildBlueMessage("1", message), obj);
  12. };
  13. }
  14. my = new My();

then you can use my.js to call Java

  1. my.Toast("你好", {
  2. success: (res) => {
  3. alert("success:"+res);
  4. },
  5. fail: (res) => {
  6. alert("fail:"+res);
  7. },
  8. complete: (res) => {
  9. alert("complete:"+res);
  10. }
  11. });

Register a JavaScript handler function so that Java can call

  1. WebViewJavascriptBridge.registerHandler("functionInJs", function(data, responseCallback) {
  2. document.getElementById("show").innerHTML = ("data from Java: = " + data);
  3. var responseData = "Javascript Says Right back aka!";
  4. responseCallback(responseData);
  5. });

License

This project is licensed under the terms of the MIT license.