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