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