// 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() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 一般根据scheme(协议格式) & aut