Android WebView与H5交互
只写了html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Android WebView 与 H5 交互 Demo</title>
</head>
<body>
<div>
<button onclick="useClick()">
点击获取 Android 回传的数据
</button>
<p>uname: <span id="uname">June</span></p>
<p>pwd: <span id="pwd">123</span></p>
<p>show responseData:</p>
<p id="show"></p>
</div>
<script type="text/javascript">
var hasBridge = false
//声明
//注册事件监听
function connectWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener(
'WebViewJavascriptBridgeReady',
function() {
callback(WebViewJavascriptBridge)
},
false
);
}
}
//初始化
//注册回调函数,第一次连接时调用 初始化函数
//接收默认Java方法传过来的参数
connectWebViewJavascriptBridge(function(bridge) {
bridge.init(function(message, responseCallback) {
hasBridge = true;
var responseData = '默认接收收到来自 Java的数据,回传数据给你';
responseCallback(responseData);
});
});
function useClick() {
//拿网页上的数据
var name = document.getElementById('uname').innerHTML;
var pwd = document.getElementById('pwd').innerHTML;
var data = "name = " + name + ", password = " + pwd;
if (window.WebViewJavascriptBridge) {
document.getElementById("show").innerHTML = 'Have WebViewJavascriptBridge';
} else {
document.getElementById("show").innerHTML = 'No WebViewJavascriptBridge';
}
//调用本地java方法
//第一个参数是 调用java的函数名字 第二个参数是要传递的数据 第三个参数js在被回调后具体执行方法,responseData为java层回传数据
//接收数据responseData
//接收数据responseData
window.WebViewJavascriptBridge.callHandler(
'submitFromWeb', { 'info': data },
function(responseData) {
document.getElementById("show").innerHTML = responseData;
}
);
}
</script>
</body>
</html>
参考链接: