Android端调用js
使用loadUrl(1. 会刷新页面 2. 无法获取 js 方法执行结果)
mWebview.loadUrl("javascript: func()");
使用evaluateJavascript(1. 性能好 2. 可获取 js 执行后的返回值 3.仅在安卓 4.4 以上可用)
mWebview.evaluateJavascript("javascript: func()", new ValueCallback() {
@Override
public void onReceiveValue(String value) {
return;
}
});
js调用Android端
1.定义一个与JS对象映射关系的Android类:AndroidtoJs
public class AndroidtoJsextends Object {
// 定义JS需要调用的方法
// 被JS调用的方法必须加入@JavascriptInterface注解
@JavascriptInterface
public void hello(String msg) {
System.out.println("JS调用了Android的hello方法");
}
}
2.在activity中的webview添加Android类与JS代码的映射
webview = findViewById(R.id.webview);
WebSettings webSettings = webview.getSettings();
// 设置与Js交互的权限
webSettings.setJavaScriptEnabled(true);//--------------- 这个要设置 要不会执行方法
webview.loadUrl("file:///android_asset/javascript1.html");
// 通过addJavascriptInterface()将Java对象映射到JS对象,参数1:Javascript对象名,参数2:Java对象名
webview.addJavascriptInterface(new AndroidtoJs(), "test");//AndroidtoJS类对象映射到js的test对象
3.js中调用AndroidtoJs@JavascriptInterface修饰的方法
<script>function callAndroid(){ test.hello("js调用了android中的hello方法"); }</script>