Android呼叫WebView的JS和JS呼叫Android的方法
阿新 • • 發佈:2019-01-28
① Android呼叫WebView的JS
第一步,開啟JS呼叫
WebSettings settings = webview.getSettings();
//設定與Js互動的許可權
settings.setJavaScriptEnabled(true);
第二步,在HTML檔案中寫好要被呼叫的JS方法
function javaCallJs(params){
$('#closegrjkda').html(params);
}
上面的params是從Android端傳進去的引數
注意:這個JS函式必須是在全域性範圍的,這樣才能被訪問到,不要放進區域性,例如:
$(function(){
//不能放進這裡
});
第三步,在Android直接呼叫
webview.loadUrl("javascript:javaCallJs('params')");
注意:引數的傳遞一定要嚴格按照JS的寫法,例如上面傳遞一個字串,必須加單引號,其次,如果要改變HTML中的UI,必須在主執行緒操作,如下
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.d(TAG, "run: ");
webview.loadUrl("javascript:javaCallJs('params')" );
}
});
上面Android呼叫WebView的JS完成。
②JS呼叫Android的方法
第一步,先寫一個JS介面類,如下:
public class JsInterface {
/**
* @JavascriptInterface 這個是一定要有的,否則不可以
* @param param
*/
@JavascriptInterface
public void jsCallJava(final String param) {
Log.d(TAG, "jsCallJava: "+ param);
}
}
注意: @JavascriptInterface 這個是一定要有的,否則呼叫失敗
第二步,把上面寫好的介面類,new 一個例項,傳遞到HTML頁面
webview.addJavascriptInterface(new JsInterface(), "jsInterface");
注意:第二個引數,jsInterface 就是在HTML可以使用的例項,可以用jsInterface.jsCallJava(“123”)這樣的方式呼叫函式。
第三步,在HTML直接呼叫
window.jsInterface.jsCallJava("jsCallJava");
注意:jsInterface就是傳遞過來的物件
至此,JS呼叫Android的方法完成