BridgeWebView的简单使用,自动调用js的代码
2017-04-11 11:19
821 查看
之前公司在写混合式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端代码
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns: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"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"><com.github.lzyzsd.jsbridge.BridgeWebViewandroid:id="@+id/test_bridge_webView"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/><Buttonandroid:id="@+id/to_web_default"android:layout_margin="10dp"android:layout_width="match_parent"android:text="默认传递数据给Web"android:layout_height="wrap_content"/></LinearLayout>
这是Layout
希望对你们有帮助,有问题可以私信我,Android代码里我写两种方式,一种是按钮点击触发,一个是网页加载完成后发的
那个Android里面要配置的
好啦,整个BridgeWebView简单使用就是这样了
相关文章推荐
- iOS中OC与JS交互WebViewJavascriptBridge的简单使用
- WebView使用中js调用java代码时targetSdkVersion大于17时,无法调用成功
- Android之Webview使用Java代码和JS相互调用
- WebViewJavascriptBridge 使用 js调iOS原生代码
- WKWebView的简单使用,与js交互(js调用OC或swift方法)
- Android WebView的使用(三)js、java代码调用出错
- WebView的简单使用,JS的调用
- ios开源框架——WebViewJavascriptBridge的简单使用 实现JS与iOS Native Code互调
- 在WebView中调用js代码
- iOS webView加载本地html 调用 js,css (基本使用)
- WebView使用总结(应用函数与JS函数互相调用)
- Android的WebView通过JS调用java代码
- iOS和JS互调--WebViewJavascriptBridge使用说明
- android WebView 和js互调用的使用说明。
- android中利用webview调用网页上的js代码和注意事项
- 分享:WebView使用总结(应用函数与JS函数互相调用)
- android Webview 实现js调用java代码实现Activity跳转
- Android WebView使用之JavaScript调用Java代码注意事项
- iOS开发使用WebViewJavascriptBridge实现OC与JS交互
- IOS网络第七天WebView-03js中调用webView中的代码