JSBridge框架学习小结
JsBridge的github地址:JsBridge链接
一、前言
应用开发必备的基础知识,学的比较浅,做个小结,其中不包含图片文件上传的部分。
二、studio导包
repositories {
// ...
maven { url "https://jitpack.io" }
}
dependencies {
compile 'com.github.lzyzsd:jsbridge:1.0.4'
}
三、代码部分
1.activity_main.xml布局
这里主要是在布局中添加框架中的BridgeWebView控件。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context="com.example.myapplication.MainActivity">
<!-- button 演示Java调用web -->
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:text="演示Java调用web"
android:layout_height="48dp"
/>
<!-- webview 演示web调用Java -->
<com.github.lzyzsd.jsbridge.BridgeWebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</com.github.lzyzsd.jsbridge.BridgeWebView>
</RelativeLayout>
2.MainActivity代码
这里主要分3步:
1、加载url.
webView.loadUrl("file:///android_asset/demo.html");
2、注册handler,registerHandler();
参数:registerHandler(标识,回调接口);
webView.registerHandler("submitFromWeb", new BridgeHandler() {
@Override
public void handler(String data, CallBackFunction function) {
//data为js数据,我们可以解析等,处理逻辑后,用下面的方法回传数据给js。
function.onCallBack("h5你好,我处理好了,给你返回这句话打个招呼");
}
});
3、定义callHandler,这是java主动获取h5中的数据。可以在初始化界面时候从h5拿数据时使用。
参数:标识,实体类对象,回调接口(在这里拿到js给你的数据data)
webView.callHandler("functionInJs", new Gson().toJson(user), new CallBackFunction() {
@Override
public void onCallBack(String data) {
Log.i(TAG,data);
}
});
4、当h5调用send()发送消息的时候,调用此段代码。(看需求加此步骤)
参数:data,h5给java的数据,处理好了可以调用function.onCallBack()返回给h5
webView.setDefaultHandler(new BridgeHandler(){
@Override
public void handler(String data, CallBackFunction function) {