zoukankan      html  css  js  c++  java
  • webview与壳交互的几种方式

    1.js调用android中的方法

    (1)通过addJavascriptInterface通信

    android中webview增加addJavascriptInterface的方法,

    webView.addJavascriptInterface(new JavaScriptInterface(),"Demo");

    对JavaScriptInterface实现构造函数,增加方法,js可以直接采用命名空间的方式,调用定义的方法。

    final class JavaScriptInterface{
            JavaScriptInterface(){
            }
            //注意:17+版本,必须申明注解
            @JavascriptInterface
            public void clickOnAndroid() {
                mHandler.post(new Runnable() {
                    public void run() {
                        webView.loadUrl("javascript:wave()");
                    }
                });
            }
        }

    html中可以直接通过window.Demo.clickOnAndroid调用android中的方法。

    (2)通过window.location(url)

    url可以做一个接口定义,比如url=open?title=1&name=2&callback

    定义一个方法,加参数,回调函数。

    android在MyWebViewClient中的shouldOverrideUrlLoading方法会进行拦截。

    在此方法中可以对url进行解析,触发相应的接口方法,达到了js调用android方法,对壳做一些交互处理。

    =====

    分析:

    js调用android或者ios中的方法,建议采用window.location的方式,统一定义一套接口,采用相同的url进行解析。这样,在前端js处理时就无需为android、ios各自做判断,定义不同的调用机制,通用性也比较强。

    2.android中调用js的方法

    webView.loadUrl("javascript:wave()");

    html中有个function wave(){}方法,通过该方式可以直接调用wave()。

    通过这种模式,js中的方法都是暴露在window最顶级的对象上的。

  • 相关阅读:
    02 Filter过滤器
    Vue入门
    Git教程
    Markdown 常用语言关键字
    王爽《汇编语言》(第三版)实验16解析
    王爽《汇编语言》(第三版)实验15解析
    王爽《汇编语言》(第三版)实验14解析
    王爽《汇编语言》(第三版)实验13解析
    王爽《汇编语言》(第三版)实验12解析
    王爽《汇编语言》(第三版)实验11解析
  • 原文地址:https://www.cnblogs.com/shiqudou/p/3955029.html
Copyright © 2011-2022 走看看