zoukankan      html  css  js  c++  java
  • Android中Java和JavaScript交互

    实现交互步骤:

    • WebView开启JavaScript脚本执行
    • WebView设置供JavaScript调用的交互接口。
    • 客户端和网页端编写调用对方的代码。

    js调用Java

      格式为:window.jsInterfaceName.methodName(parameterValues) 

    Java(webView)调用JS

      格式为:webView.loadUrl(“javascript:methodName(parameterValues)”)

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

    1.Java调用js代码
    String call = "javascript:sumToJava(1,2)";
    webView.loadUrl(call);
    2.js函数处理,并将结果通过调用java方法返回
    function sumToJava(number1, number2){
           window.control.onSumResult(number1 + number2)
    }
    3.Java在回调方法中获取js函数返回值
    @JavascriptInterface
    public void onSumResult(int result) {
      Log.i(LOGTAG, "onSumResult result=" + result);
    }

    Android在4.4之后使用evaluateJavascript即可。

    function getGreetings() {
          return 1;
    }

    java代码时用evaluateJavascript方法调用

    private void testEvaluateJavascript(WebView webView) {
      webView.evaluateJavascript("getGreetings()", new ValueCallback<String>() {
    
      @Override
      public void onReceiveValue(String value) {
          Log.i(LOGTAG, "onReceiveValue value=" + value);
      }});
    }

    注意

    • 上面限定了结果返回结果为String,对于简单的类型会尝试转换成字符串返回,对于复杂的数据类型,建议以字符串形式的json返回。
    • evaluateJavascript方法必须在UI线程(主线程)调用,因此onReceiveValue也执行在主线程。
  • 相关阅读:
    316 Remove Duplicate Letters 去除重复字母
    315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
    313 Super Ugly Number 超级丑数
    312 Burst Balloons 戳气球
    309 Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
    Java 类成员的初始化顺序
    JavaScript 全局
    HTML字符实体
    Java中的toString()方法
    JavaScript 弹窗
  • 原文地址:https://www.cnblogs.com/yl-saber/p/7418674.html
Copyright © 2011-2022 走看看