H5和Android通訊容器BridgeWebView的使用
阿新 • • 發佈:2019-02-08
PS:如果覺得這個系列的每篇文章太長,那就直接看視訊吧
執行效果
使用步驟
1. 在project的build.gradle新增如下程式碼(如下圖)
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
2. 在Module的build.gradle新增依賴
compile 'com.github.open-android:BridgeWebView:v1.0'
3.佈局檔案中使用
<com.itheima.view.BridgeWebView android:id="@+id/bdwebview" android:layout_width="match_parent" android:layout_height="match_parent"/>
4.Activity初始化通訊橋樑
mBdwebview = (BridgeWebView) findViewById(R.id.bdwebview);//初始化BridgeWebView
mBdwebview.loadUrl("http://10.0.3.2:63343/BridgeWebView/index.html");//顯示H5頁面
mBdwebview.addBridgeInterface(new MyJavaSctiptInterface(mBdwebview, this));//註冊橋樑類,該類負責H5和android通訊
5.橋樑類提方法給js呼叫
public class MyJavaSctiptInterface{ private Activity mActivity; public MyJavaSctiptInterface(Activity mActivity) { this.mActivity = mActivity; } public void callPhone(String[] strs){//撥號 JSONObject jsonObject = new JSONObject(strs[0]); String phone = jsonObject.optString("phone"); Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)); mActivity.startActivity(intent); } }
6.js中呼叫android方法
$("#btn1").on("click", function(){ var method = "callPhone";//js呼叫的android方法名 var params = {"phone":"10086", "callback":""};//callback用於回撥js callAndroidMethod(method, params); }); /** * 統一管理js呼叫安卓方法 * @param method 方法名 * @param params 向android傳引數 陣列格式 */ var callAndroidMethod = function(method, params){ window.jsInterface.invokeMethod(method, [JSON.stringify(params)]); }
歡迎關注微信公眾號