直接上代码,有注释,学习Android过程记录。
Android Activity代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| ,并暴露对象名为ntv,js使用window.ntv.functionName()方式调用 wv.addJavascriptInterface(new JsCall(), "ntv");
ws = wv.getSettings(); ws.setJavaScriptEnabled(true);
//不使用缓存 ws.setCacheMode(WebSettings.LOAD_NO_CACHE); //支持缩放 ws.setSupportZoom(true); //自适应屏幕 ws.setUseWideViewPort(true); ws.setLoadWithOverviewMode(true); }
//js调用的类及方法 class JsCall { @JavascriptInterface public String tost(String msg) { Toast.makeText(activity, "toast: " + msg, Toast.LENGTH_SHORT).show(); return "JsCalled Native: " + msg; } }
//回退栈(WebView页面) @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (wv.canGoBack()) { wv.goBack();//返回上一浏览页面 return true; } else { finish();//关闭Activity } } return super.onKeyDown(keyCode, event); }
//ActionBar菜单 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); }
//ActionBar菜单响应 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item: Toast.makeText(this, "Menu Item", Toast.LENGTH_SHORT).show(); return true; default: return super.onOptionsItemSelected(item); } } }
|
布局文件LinearLayout布局,orentation=vertical,一个EditText,一个Button一个WebView,长什么样子的话想象一下就好了。
html文件,同样非常简单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <html> <head> <title>DEMO TEST</title> <script type="text/javascript"> function fill(val) { var txt=document.getElementById('txtinput'); txt.value=val; alert(val); } function native() { var txt=document.getElementById('txtinput'); alert(window.ntv.tost(txt.value)); } </script>
<style type="text/css">
body{ font-size: 20px; } </style> </head> <body> <input type="text" id="txtinput" /><br /> <button onclick="native()">CALL JAVA NATIVE</button> </body>
|
参考资料:developer.android.com WebView
源码下载:WebViewNJs