Native/JS交互方案

作者: 落水木木 | 来源:发表于2018-05-04 14:37 被阅读319次

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

相关文章

网友评论

    本文标题:Native/JS交互方案

    本文链接:https://www.haomeiwen.com/subject/jriylftx.html