首页 > 程序开发 > 移动开发 > 其他 >

BridgeWebView的简单使用,自动调用js的代码

2017-04-11

BridgeWebView的简单使用,自动调用js的代码,之前公司在写混合式Android开发,刚摸索出来js+webview的使用,老大说js原生的安全性不高,建议我用BridgeWebView+BridgeWebViewjs。

之前公司在写混合式Android开发,刚摸索出来js+webview的使用,老大说js原生的安全性不高,建议我用BridgeWebView+BridgeWebViewjs,这是我自己一些示例代码,我自己是ok的,被这个BridgeWebView的BridgeWebViewClient坑了

package com.baoyuan.fragment.Second.Property;

import android.content.Context;

import android.os.Bundle;

import android.os.Message;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.webkit.WebView;

import android.widget.Button;

import com.baoyuan.R;

import com.baoyuan.fragment.BaseFragment1;

import com.github.lzyzsd.jsbridge.BridgeHandler;

import com.github.lzyzsd.jsbridge.BridgeWebView;

import com.github.lzyzsd.jsbridge.BridgeWebViewClient;

import com.github.lzyzsd.jsbridge.CallBackFunction;

public class WebPropertyFragment extends BaseFragment1 implements View.OnClickListener{

private static final String TAG=WebPropertyFragment.class.getSimpleName();

private BridgeWebView mBridgeWebView;

private Context mActivity;

private Button to_web_default;

public WebPropertyFragment() {

// Required empty public constructor

}

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View briegeView = inflater.inflate(R.layout.fragment_web_property, null);

mActivity = getActivity();

mBridgeWebView=(BridgeWebView)briegeView.findViewById(R.id.test_bridge_webView);

mBridgeWebView.loadUrl("http://10.55.88.70:8080/BYhtml5/BrigeWebView.html");

to_web_default= (Button) briegeView.findViewById(R.id.to_web_default);

to_web_default.setOnClickListener(this);

initViews();

return briegeView;

}

@Override

public void onHandleMessage(Message msg) {

}

private void initViews(){

mBridgeWebView.setWebViewClient(new MyWebViewClient(mBridgeWebView));

mBridgeWebView.setDefaultHandler(new BridgeHandler() {

@Override

public void handler(String data, CallBackFunction function) {

Log.e(TAG, "DefaultHandler接收全部来自web的数据:"+data);

function.onCallBack("DefaultHandler收到Web发来的数据,回传数据给你");

}

});

//必须和js同名函数,注册具体执行函数,类似java实现类。

//第一参数是订阅的java本地函数名字 第二个参数是回调Handler , 参数返回js请求的resqustData,function.onCallBack()回调到js,调用function(responseData)

mBridgeWebView.registerHandler("submitFromWeb", new BridgeHandler() {

@Override

public void handler(String data, CallBackFunction function) {

Log.e(TAG, "指定Handler接收来自web的数据:" + data);

function.onCallBack("指定Handler收到Web发来的数据,回传数据给你");

}

});

}

@Override

public void onClick(View view) {

switch (view.getId()){

//点击

case R.id.to_web_default:

mBridgeWebView.send("aaa",new CallBackFunction(){

@Override

public void onCallBack(String data) {

Log.e(TAG, "来自web的回传数据:" + data);

}

});

break;

}

}

class MyWebViewClient extends BridgeWebViewClient {

public MyWebViewClient(BridgeWebView webView) {

super(webView);

}

//网页加载完成

@Override

public void onPageFinished(WebView view, String url) {

super.onPageFinished(view, url);

Log.e(TAG,"onPageFinished");

mBridgeWebView.callHandler("functionInJs","bbb",new CallBackFunction(){

@Override

public void onCallBack(String data) {

Log.e(TAG, "来自web的回传数据:" + data);

}

});

}

}

}

这是我的ANDROID端代码

这是Layout

希望对你们有帮助,有问题可以私信我,Android代码里我写两种方式,一种是按钮点击触发,一个是网页加载完成后发的

那个Android里面要配置的

好啦,整个BridgeWebView简单使用就是这样了

相关文章
最新文章
热点推荐