首先在Anndroid代碼中對WebView進行初始化javascript
webView = (WebView) findViewById(R.id.webview); // 啓用javascript webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new Test(),"android"); class Test{ @JavascriptInterface public void show(){ runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"show",3000).show(); } }); } @JavascriptInterface public void showText(String text){ runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,text,3000).show(); } }); } }
html的代碼以下html
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=gb2312"> <script type="text/javascript"> function javacalljs(){ document.getElementById("content").innerHTML = "<br\>JAVA調用了JS的無參函數"; } function javacalljswith(arg){ document.getElementById("content").innerHTML = ("<br\>"+arg); } </script> </head> <body> HTML 內容顯示 <br/> <h1><div id="content">內容顯示</div></h1> <br/> <input type="button" value="點擊調用java代碼" onclick="window.android.show()" /> <br/> <input type="button" value="點擊調用java代碼並傳遞參數" onclick="window.android.showText('你好')" /> </body> </html>
WebView與js交互主要分四種狀況前端
一、Android 調用HTML中的javascript腳本java
//調用js中無參方法 webView.loadUrl("javascript:javacalljs()");
二、HTML中的javascript腳本調用Android本地代碼android
window.android.show()
三、Android 調用HTML中的javascript腳本並傳遞參數web
//傳遞參數調用JS的方法 webView.loadUrl("javascript:javacalljswith(" + "'加班'" + ")");
四、HTML中的javascript腳本調用Android本地代碼並傳遞參數ide
window.android.showText('你好')
window後跟的android爲別名,須要前端開發人員與移動端開發人員定義統一的別名函數