Native/JS交互方案
标签(空格分隔): Hybird
1. 方案一 scheme拦截(JSBridge)
客户端通拦截H5的url,判定之后执行约定的逻辑。
JS对话框方法
1.js调用prompt
方法
unction clickprompt(){
// 调用prompt()
var result=prompt("js://demo?params");
alert("demo " + result);
2.在客户端的WebChromeClient()
重写onJsPrompt()
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
// 根据协议的参数,判断是否是所需要的url
// 一般根据scheme(协议格式) & authority(协议名)判断(前两个参数)
Uri uri = Uri.parse(message);
if (uri.getScheme().equals("js")) {
if (uri.getAuthority().equals("demo")) {
// 执行JS所需要调用的逻辑
System.out.println("js调用了Android的方法");
// 可以在协议上带有参数并传递到Android上
HashMap<String, String> params = new HashMap<>();
Set<String> collection = uri.getQueryParameterNames();
//参数result:代表消息框的返回值(输入值)
result.confirm("js调用了Android的方法成功啦");
}
return true;
}
return super.onJsPrompt(view, url, message, defaultValue, result);
}
3.2 优点
- 本质也是协议拦截,不存在兼容性问题。
3.3 缺点
- native层面与现有的协议不兼容,需要重做。
4. 总结
js交互方案总结参考
Carson_Ho-最全面总结 Android WebView与 JS 的交互方式
不会写代码的IT男-WebView 安全之 addJavascriptInterface
lzyzsd-JsBridge
网友评论