资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

android和js的交互之jsbridge使用教程

前言

成都创新互联公司主营磴口网站建设的网络公司,主营网站建设方案,app开发定制,磴口h5重庆小程序开发搭建,磴口网站营销推广欢迎磴口等地区企业咨询

众所周知,app的一些功能可能会使用到H5开发,这就难免会遇到java与js 的相互调用,android 利用WebViewJavascriptBridge 实现js和java的交互,这里介绍下JsBridge第三方库的使用。

github传送门:https://github.com/lzyzsd/JsBridge  (本地下载)

简单分析

java与js相互调用如下:

java发送数据给js,js接收并回传给java

同理,js发送数据给java,java接收并回传给js

同时两套流程都存在「默认接收」 与 「指定接收」

大致调用流程图如下:

android和js的交互之jsbridge使用教程

android和js的交互之jsbridge使用教程

依赖

项目build.gradle

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

app build.gradle

dependencies {
 compile 'com.github.lzyzsd:jsbridge:1.0.4'
}

xml里直接使用com.github.lzyzsd.jsbridge.BridgeWebView替代原生WebView

另外放置两个Button用于测试使用

<?xml version="1.0" encoding="utf-8"?>

 

html文件里简单放置两按钮发送数据,同时提供打印信息



 
 Title




打印信息

这里我本地跑的一个简单的django项目,起了个服务供使用

webView.loadUrl(http://10.0.0.142:8000/cake/jsbridge);

webview加载页面

android和js的交互之jsbridge使用教程

java发送数据给js

button注册监听

javaToJsDefault.setOnClickListener(this);
javaToJsSpec.setOnClickListener(this);

按钮点击事件,java传递数据给js

 //java传递数据给js
 @Override
 public void onClick(View v) {
  switch (v.getId()) {
   case R.id.java_to_js_default:
    //默认接收
    webView.send("发送数据给js默认接收", new CallBackFunction() {
     @Override
     public void onCallBack(String data) { //处理js回传的数据
      Toast.makeText(WebTestActivity.this, data, Toast.LENGTH_LONG).show();
     }
    });
    break;
   case R.id.java_to_js_spec:
    //指定接收参数 functionInJs
    webView.callHandler("functionInJs", "发送数据给js指定接收", new CallBackFunction() {
     @Override
     public void onCallBack(String data) { //处理js回传的数据
      Toast.makeText(WebTestActivity.this, data, Toast.LENGTH_LONG).show();
     }
    });
    break;
   default:
    break;
  }
 }

js WebViewJavascriptBridge注册事件监听,接收数据