Android端調(diào)用js
使用loadUrl(1. 會(huì)刷新頁(yè)面 2. 無(wú)法獲取 js 方法執(zhí)行結(jié)果)
mWebview.loadUrl("javascript: func()");
使用evaluateJavascript(1. 性能好 2. 可獲取 js 執(zhí)行后的返回值? 3.僅在安卓 4.4 以上可用)
mWebview.evaluateJavascript("javascript: func()", new ValueCallback() {
@Override
? ? public void onReceiveValue(String value) {
return;
? ? }
});
js調(diào)用Android端
1.定義一個(gè)與JS對(duì)象映射關(guān)系的Android類:AndroidtoJs
public class AndroidtoJsextends Object {
// 定義JS需要調(diào)用的方法
// 被JS調(diào)用的方法必須加入@JavascriptInterface注解
? ? @JavascriptInterface
public void hello(String msg) {
System.out.println("JS調(diào)用了Android的hello方法");
? ? }
}
2.在activity中的webview添加Android類與JS代碼的映射
webview = findViewById(R.id.webview);
WebSettings webSettings = webview.getSettings();
// 設(shè)置與Js交互的權(quán)限
webSettings.setJavaScriptEnabled(true);//--------------- 這個(gè)要設(shè)置 要不會(huì)執(zhí)行方法
webview.loadUrl("file:///android_asset/javascript1.html");
// 通過(guò)addJavascriptInterface()將Java對(duì)象映射到JS對(duì)象,參數(shù)1:Javascript對(duì)象名,參數(shù)2:Java對(duì)象名
webview.addJavascriptInterface(new AndroidtoJs(), "test");//AndroidtoJS類對(duì)象映射到j(luò)s的test對(duì)象
3.js中調(diào)用AndroidtoJs@JavascriptInterface修飾的方法
<script>function callAndroid(){ test.hello("js調(diào)用了android中的hello方法"); }</script>