Android中Java和JavaScript交互 Android原生和html交互

1.WebView开启JavaScript脚本执行

WebSettings settings = webView.getSettings();
      settings.setJavaScriptEnabled(true);

2.WebView设置供JavaScript调用的交互接口。

  webView.addJavascriptInterface(new JsInteration(), "android");

3.客户端和网页端编写调用对方的代码。
java代码

 public class JsInteration {

      @JavascriptInterface
      public void toastMessage(String message) {
          Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
      }

      @JavascriptInterface
      public void onSumResult(int result) {
          Log.i(LOGTAG, "onSumResult result=" + result);
      }
  }

htlm代码

<html>
<script type="text/javascript">
    function toastMessage(message) {
        window.control.toastMessage(message)
    }
    function sumToJava(number1, number2){
       window.control.onSumResult(number1 + number2)
    }
</script>
Java-Javascript Interaction In Android
</html>

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

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)”)

webView.loadUrl("javascript:sumToJava(1,2)");

这就实现了java与js之间的相互调用。

调用js有参数有返回值的函数
Android在4.4之前并没有提供直接调用js函数并获取值的方法,所以在此之前,常用的思路是 java调用js方法,js方法执行完毕,再次调用java代码将值返回。
Android 4.4之后使用evaluateJavascript即可。这里展示一个简单的交互示例 具有返回值的js方法

html代码

function getGreetings() {
      return 1;
}

java代码

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

evaluateJavascript方法必须在UI线程(主线程)调用,因此onReceiveValue也执行在主线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值