android webview用法小结2 java与javascript的交互

来源:互联网 发布:苹果手机电池测试软件 编辑:程序博客网 时间:2024/05/02 11:35

先让浏览器支持javascript

[java] view plaincopyprint?
  1. webView.getSettings().setJavaScriptEnabled(true);//打开就可以用js的功能

Js代码,放在asset文件夹下,也可以在服务器端,这样改变内容,只需改服务器端,客户端不用修改

[html] view plaincopyprint?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Insert title here</title>
  6. <script type="text/javascript">
  7. function btn_test() {
  8. /* 打印,logcat里的tag是Web Console */
  9. console.log("btn_test");
  10. }
  11. function call_java() {
  12. /* js调用java代码,需要接口 */
  13. Window.interface_test.showToastFromWeb("hello i am javascript!");
  14. }
  15. function test_alert() {
  16. /* 弹出对话框 */
  17. alert("hello i am javascript!");
  18. }
  19. function test_confirm() {
  20. /* 弹出带确定和取消按钮的对话框 */
  21. var v = confirm("hello i am javascript!");
  22. console.log("onfirm " + v);
  23. }
  24. function test_prompt() {
  25. /* 弹出带输入框的对话框 */
  26. var v = prompt("input you name!", "tom");
  27. console.log("prompt " + v);
  28. }
  29. </script>
  30. </head>
  31. <body>
  32. <button onclick="btn_test()">test</button>
  33. <button onclick="call_java()">call_java</button>
  34. <button onclick="test_alert()">test_alert</button>
  35. <button onclick="test_confirm()">test_confirm</button>
  36. <button onclick="test_prompt()">test_prompt</button>
  37. <label tel:800800284>tel:8008233</label>
  38. </body>
  39. </html>

Java代码里

对应call_java()方法

[java] view plaincopyprint?
  1. webView.addJavascriptInterface(new Object(){
  2. public void showToastFromWeb(String msg){
  3. showToast(msg);
  4. }
  5. }, "interface_test");

对应alert等方法

[java] view plaincopyprint?
  1. webView.setWebChromeClient(new WebChromeClient(){
  2. @Override
  3. public void onProgressChanged(WebView view,int newProgress) {
  4. //这里上一博文已提过
  5. }
  6. @Override
  7. public boolean onJsAlert(WebView view, String url, String message,
  8. JsResult result) {
  9. // TODO Auto-generated method stub
  10. return super.onJsAlert(view, url, message, result);
  11. }
  12. @Override
  13. public boolean onJsConfirm(WebView view, String url,
  14. String message, JsResult result) {
  15. // TODO Auto-generated method stub
  16. return super.onJsConfirm(view, url, message, result);
  17. }
  18. @Override
  19. public boolean onJsPrompt(WebView view, String url, String message,
  20. String defaultValue, JsPromptResult result) {
  21. // TODO Auto-generated method stub
  22. return super.onJsPrompt(view, url, message, defaultValue, result);
  23. }
  24. });

加载html

[java] view plaincopyprint?
  1. // webView.loadUrl("javascript:btn_test()");
  2. webView.loadUrl("file:///android_asset/test.html");

效果图

原创粉丝点击