android 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函数返回值

@JavascriptInterfacepublic void onSumResult(intresult) {

Log.i(LOGTAG,"onSumResult result=" +result);

}

Android在4.4之后使用evaluateJavascript即可。

function getGreetings() {return 1;

}

java代码时用evaluateJavascript方法调用

private voidtestEvaluateJavascript(WebView webView) {

webView.evaluateJavascript("getGreetings()", new ValueCallback() {

@Overridepublic voidonReceiveValue(String value) {

Log.i(LOGTAG,"onReceiveValue value=" +value);

}});

}

注意

上面限定了结果返回结果为String,对于简单的类型会尝试转换成字符串返回,对于复杂的数据类型,建议以字符串形式的json返回。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值