• 每日日报2021.3.9


    今天完成内容:

    1.学习android

    二、webview与js的交互(相互调用参数、传值)

    前端网页全部代码,文章最后有示例项目完整源码

    <!DOCTYPE html><html><head>    <meta charset="utf-8">    
    <title>jaydenxiao遇上了webview</title>    
    <script>
    function sayHello() {
    alert("我是无参无返回toast") 
    }
    function alertMessage(message) { 
    alert(message)  
    }
    function toastMessage(message) {
    window.control.toastMessage(message)
    }
    function sumToJava(number1, number2){
    window.control.onSumResult(number1 + number2)
    }
    function sumToJava2(number1, number2) {
    return number1 + number2;
    }    
    </script>
    </head><body>
    <button type="button" id="button" onclick="toastMessage('js调用了android方法')">js访问android中方法</button>
    </body>
    </html>
    

    调用示例:

    js调用Java

    调用格式为window.jsInterfaceName.methodName(parameterValues)
    此例中我们使用的是control作为注入接口名称。

    function toastMessage(message) { 
    window.control.toastMessage(message) 
    }
     function sumToJava(number1, number2){ 
    window.control.onSumResult(number1 + number2)
     }
    
    Java调用JS

    webView调用js的基本格式为webView.loadUrl(“javascript:methodName(parameterValues)”)
    1. android调用js无参无返回值函数

    final String call = "javascript:sayHello()";
    mWebView.post(new Runnable() {    
    @Override    
    public void run() { 
           mWebView.loadUrl(call);    
    }});
    

    2. android调用js有参无返回值函数

    final String call = "javascript:alertMessage("" + "我是android传过来的内容,hey man" + "")";
    mWebView.post(new Runnable() {    
    @Override    
    public void run() { 
           mWebView.loadUrl(call);    
    }});
    

    3. android调用js有参有返回值函数(4.4之前)
    Android在4.4之前并没有提供直接调用js函数并获取值的方法,所以在此之前,常用的思路是 java调用js方法,js方法执行完毕,再次调用java代码将值返回。
    **(1).android调用js代码 **

    final String call = "javascript:sumToJava(1,2)";
    mWebView.post(
    new Runnable() {  
      @Override   
     public void run() {       
     mWebView.loadUrl(call);   
     }});
    

    (2).js函数处理,并将结果通过调用android方法返回
    网页端:

    function sumToJava(number1, number2){ 
    window.control.onSumResult(number1 + number2) 
    } 
    

    (3).android在回调方法中获取js函数返回值

    @JavascriptInterfacepublic void onSumResult(int result) {   
    Toast.makeText(getApplicationContext(), "我是android调用js方法(4.4前),入参是1和2,js返回结果是" + result, Toast.LENGTH_LONG).show();
    }
    

    4. android调用js有参有返回值函数(4.4以上):
    Android 4.4以上使用evaluateJavascript即可。这里展示一个简单的交互示例 具有返回值的js方法
    js代码如下:

    function sumToJava2(number1, number2) {
    return number1 + number2;
    }
    

    android代码如下:

    @TargetApi(Build.VERSION_CODES.KITKAT)
    public void Android2JsHaveParmHaveResult2(View view) { 
     mWebView.evaluateJavascript("sumToJava2(3,4)", new ValueCallback<String>() {
    @Override 
    public void onReceiveValue(String Str) {   
    Toast.makeText(getApplicationContext(), "我是android调用js方法(4.4后),入参是3和4,js返回结果是" + Str, Toast.LENGTH_LONG).show(); 
      }    
    });}

    摘抄源于:
    作者:世锋日上
    链接:https://www.jianshu.com/p/d2f5ae6b4927
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    3.看视频

    遇到问题:

    看不太明白

    明日目标:

    学习Android studio的开发

  • 相关阅读:
    Liferay7 BPM门户开发之34: liferay7对外服务类生成(RestService Get Url)
    Liferay7 BPM门户开发之33: Portlet之间通信的3种方式(session、IPC Render Parameter、IPC Event、Cookies)
    Liferay7 BPM门户开发之32: 实现自定义认证登陆(定制Authentication Hook)
    Liferay7 BPM门户开发之30: 通用帮助类Validator、ArrayUtil、StringUtil等使用
    Liferay7 BPM门户开发之29: 核心kernel.util包下面的通用帮助类ParamUtil、GetterUtil使用
    Liferay7 BPM门户开发之28: Portlet文件上传,及实体类同步更新上传
    Liferay7 BPM门户开发之26: 集成Activiti到Liferay7
    Liferay7 BPM门户开发之27: MVC Portlet插件工程开发
    Liferay7 BPM门户开发之25: Liferay7应用程序配置(APPLICATION CONFIGURATION)
    Liferay7 BPM门户开发之24: Liferay7应用程序安全
  • 原文地址:https://www.cnblogs.com/leiyu1905/p/14906656.html
Copyright © 2020-2023  润新知