1. 程式人生 > >Android呼叫WebView的JS和JS呼叫Android的方法

Android呼叫WebView的JS和JS呼叫Android的方法

① 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的方法完成