您的位置:首页 > 移动开发 > Android开发

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

2016-07-14 14:11 549 查看
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也执行在主线程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript android java