混合开发要点在于和web端和客户端之间的交互
对于Android调用JS代码:
WebSettings webSettings = mWebView.getSettings();
// 设置与Js交互的权限 webSettings.setJavaScriptEnabled(true); //其中loadUrl("javascript:callJS()")语句中参数中javascript是固定的,后面callJS()是Js函数名称,如果Js需要传参数就直接传参 mWebView.loadUrl("javascript:callJS()");
- 对于JS调用Android代码:
public class AndroidtoJs extends Object {
// 定义JS需要调用的方法
// 被JS调用的方法必须加入@JavascriptInterface注解
@JavascriptInterface
public void hello(String msg) {
System.out.println(“JS调用了Android的hello方法”);
}
}webSettings.setJavaScriptEnabled(true);
// 通过addJavascriptInterface()将Java对象映射到JS对象 //参数1:Javascript对象名 //参数2:Java对象名 mWebView.addJavascriptInterface(new AndroidtoJs(), "test");//AndroidtoJS类对象映射到js的test对象
- 对于JS调用Android代码:
<html>
<head>
<meta charset="utf-8">
<title>Carson</title>
<script>
function callAndroid(){
// 由于对象映射,所以调用test对象等于调用Android映射的对象
test.hello("aaaaaaaa");
}
</script>
</head>
<body>
//点击按钮则调用callAndroid函数
<button type="button" id="button1" onclick="callAndroid()"></button>
</body>
</html>