前言
成都創(chuàng)新互聯(lián)公司主營磴口網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,磴口h5重慶小程序開發(fā)搭建,磴口網(wǎng)站營銷推廣歡迎磴口等地區(qū)企業(yè)咨詢
眾所周知,app的一些功能可能會使用到H5開發(fā),這就難免會遇到j(luò)ava與js 的相互調(diào)用,android 利用WebViewJavascriptBridge 實現(xiàn)js和java的交互,這里介紹下JsBridge第三方庫的使用。
github傳送門:https://github.com/lzyzsd/JsBridge (本地下載)
簡單分析
java與js相互調(diào)用如下:
java發(fā)送數(shù)據(jù)給js,js接收并回傳給java
同理,js發(fā)送數(shù)據(jù)給java,java接收并回傳給js
同時兩套流程都存在「默認接收」 與 「指定接收」
大致調(diào)用流程圖如下:
依賴
項目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文件里簡單放置兩按鈕發(fā)送數(shù)據(jù),同時提供打印信息
Title
打印信息
這里我本地跑的一個簡單的django項目,起了個服務(wù)供使用
webView.loadUrl(http://10.0.0.142:8000/cake/jsbridge);
webview加載頁面
java發(fā)送數(shù)據(jù)給js
button注冊監(jiān)聽
javaToJsDefault.setOnClickListener(this); javaToJsSpec.setOnClickListener(this);
按鈕點擊事件,java傳遞數(shù)據(jù)給js
//java傳遞數(shù)據(jù)給js @Override public void onClick(View v) { switch (v.getId()) { case R.id.java_to_js_default: //默認接收 webView.send("發(fā)送數(shù)據(jù)給js默認接收", new CallBackFunction() { @Override public void onCallBack(String data) { //處理js回傳的數(shù)據(jù) Toast.makeText(WebTestActivity.this, data, Toast.LENGTH_LONG).show(); } }); break; case R.id.java_to_js_spec: //指定接收參數(shù) functionInJs webView.callHandler("functionInJs", "發(fā)送數(shù)據(jù)給js指定接收", new CallBackFunction() { @Override public void onCallBack(String data) { //處理js回傳的數(shù)據(jù) Toast.makeText(WebTestActivity.this, data, Toast.LENGTH_LONG).show(); } }); break; default: break; } }
js WebViewJavascriptBridge注冊事件監(jiān)聽,接收數(shù)據(jù)