4)JS 代码中调用 Java 方法
if (window.launcher){ // 判断 launcher 对象是否存在
// 此处的 launcher 要和 第3步中定义的 launcher 保持一致
// JS 调用 Android 的方法
launcher.callAndroid(str);
}else{
alert(“launcher not found!”);
}
方法二:通过 WebViewClient 的 shouldOverrideUrlLoading() 方法回调拦截 url
优点:不存在方式一的漏洞;
缺点:JS获取Android方法的返回值复杂。
1)JS 代码中,约定协议
function callAndroid(){
// 约定的 url 协议为:js://webview?arg1=111&arg2=222
document.location = “js://webview?arg1=”+inputEle.value+"&arg2=222";
}
2)Android 代码中,通过设置 WebViewClient 对协议进行拦截处理
webView.setWebViewClient(new WebViewClient() {<