public class SystemWebView extends Activity { Button button; WebView webView ; WebSettings webSetting; @JavascriptInterface @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_system_webview); button = (Button)findViewById(R.id.button); webView = (WebView)findViewById(R.id.webView); //加載網頁 webView.loadUrl("file:///android_asset/hello.html"); WebSettings settings = webView.getSettings(); settings.setDefaultTextEncodingName("GBK");//設置字符編碼 settings.setJavaScriptEnabled(true); //網頁是否允許JS運行 //給js window 添加子節點,方便js調用android 方法,子節點名爲JsCallAndroid webView.addJavascriptInterface(new JSCallAndroid(), "JsCallAndroid"); //覆蓋WebView默認使用第三方或系統默認瀏覽器打開網頁的行爲,使網頁用WebView打開 webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub //對網頁中超鏈接的打開,返回值是true的時候控制用WebView打開,爲false調用系統瀏覽器或第三方瀏覽器 view.loadUrl(url); return true; } }); webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { // TODO Auto-generated method stub return super.onJsAlert(view, url, message, result); } }); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { webView.loadUrl("javascript: showFromHtml2('android said:')"); } }); } class JSCallAndroid{ @JavascriptInterface public void htmlCallAndroid(){ Uri smsToUri = Uri.parse("smsto:"); Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri); intent.putExtra("sms_body", "網頁使用發短信"); startActivity(intent); } @JavascriptInterface public String htmlCallAndroid2(final String str){ Gson gson = new Gson(); JSONObject jsonObject = null; try { jsonObject = new JSONObject(str); String name = jsonObject.getString("name"); String password = jsonObject.getString("password"); return "{\"name\":" + name + " turn," + "\"password\":"+ password + " turn}"; } catch (JSONException e) { e.printStackTrace(); } return null; } } }
html 網頁
<!doctype html> <html lang="en"> <head> <meta charset="GBK"> <title>Document</title> <script> function showFromHtml2(param){ alert(param + "我調用"); } function subInput(){ var name = document.getElementById("name").value; var password = document.getElementById("password").value; var str = '{"name":"' + name + '","password":"' + password +'"}'; //調用android 的方法 var str2 = window.JsCallAndroid.htmlCallAndroid2(str); alert(str2); } function sendMsg(){ //調用android的方法 window.JsCallAndroid.htmlCallAndroid(); } </script> </head> <body> <form> 用戶名:<input id="name" type="email" name="email"/> <br/> 密碼: <input id="password" type="text" name="password"/> </br> <input type="submit" value="提交" οnclick="subInput()"/> <input type="button" value="調用發短信頁面" οnclick="sendMsg()"/> </form> </body> </html>