当前位置:   article > 正文

Android-推荐一个与H5交互的库(JsBridge)_安卓开源库 jsbridge

安卓开源库 jsbridge

导入项目

这个开源库在 JavaJavaScript 之间架起了一座桥梁,它提供了从js调用java代码和从java调用js代码的安全便捷的方式。


repositories {
    // ...
    maven { url "https://jitpack.io" }
}

dependencies {
    implementation 'com.github.lzyzsd:jsbridge:1.0.4'
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

最新的版本号请查看开源库文档 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");
        }
    });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里需要注意的是和前端工程师约定好调用的方法名。关于H5方面的使用,就不在这里赘述了,一般前端工程师会帮我们处理好。

JS调用回调交互方法

  WebViewJavascriptBridge.callHandler(
        'submitFromWeb'
        , {'param': str1}
        , function(responseData) {
            document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
        }
    );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

您可以在Java中设置一个默认的handler,这样js就可以在不分配handlerName的情况下向Java发送消息

webView.setDefaultHandler(new DefaultHandler());
    window.WebViewJavascriptBridge.doSend(
        data
        , function(responseData) {
            document.getElementById("show").innerHTML = "repsonseData from java, data = " + responseData
        }
    );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注册一个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);
    });
  • 1
  • 2
  • 3
  • 4
  • 5

Java调用这个注册的js方法

webView.callHandler("functionInJs", new Gson().toJson(user), new CallBackFunction() {
        @Override
        public void onCallBack(String data) {

        }
    });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/710364
推荐阅读
相关标签
  

闽ICP备14008679号