1. 程式人生 > >Android中Webview與js互動

Android中Webview與js互動

1.js呼叫Android程式碼

Android端:

webView.addJavascriptInterface(new WebHost(this),"js");

向WebView註冊一個名叫“js”的物件,然後在JS中可以訪問js這個物件,呼叫這個物件裡的一些方法。

 public class WebHost {
      public Context context;

      public WebHost(Context context){
          this.context = context;
      }

      @JavascriptInterface
      public void showDialogJs(){
         Toast.makeText(context, "Hello,World", Toast.LENGTH_LONG).show();
}}

注:所呼叫的方法要加 @JavascriptInterface,否則調不到

Web端:

通過js這個物件去調方法

function openDialog(){

     js.showDialogJs();

}

2.Android給Web傳參

Web端:

function showInfoFromJava(msg){

alert(msg);

}

Android端:

通過JavaScript方法將msg傳遞給Web端

webView.loadUrl("javascript:showInfoFromJava('"+photoPath+"')");

補充:

最近用了一種新的方式往webview上傳較多引數

定義一個實體類 

生成set   get方法  在get方法前加  @JavascriptInterface

例如

  @JavascriptInterface

publice String getToken(){

    return token;

}

然後在Webview上  new一個實體類(例:info) 將要傳的引數 set進實體類中

webView.addJavascriptInterface(info, "Info");

        webView.loadUrl("javascript:callJS()");

Web端解析時  直接Info.getToken()即可獲取資料;

怎麼用Chrome瀏覽器除錯WebView

在configWebViewOption()方法下新增程式碼

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){

        WebView.setWebContentsDebuggingEnabled(true); 

}

Chrome中輸入  chrome://inspect 

如果需要翻牆 我用的是SSR