Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418702
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1393
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-11 12:17
个人简介

www.vibexie.com vibexie@qq.com

文章分类

全部博文(121)

文章存档

2015年(55)

2014年(66)

我的朋友

分类: Android平台

2015-04-11 09:56:44



新建android工程,添加网络权限


MainActivity.java

  1. package com.vibexie.mywebview;

  2. import android.app.Activity;
  3. import android.support.v7.app.ActionBarActivity;
  4. import android.os.Bundle;
  5. import android.view.KeyEvent;
  6. import android.view.Menu;
  7. import android.view.MenuItem;
  8. import android.view.View;
  9. import android.view.Window;
  10. import android.webkit.JavascriptInterface;
  11. import android.webkit.JsResult;
  12. import android.webkit.WebChromeClient;
  13. import android.webkit.WebSettings;
  14. import android.webkit.WebView;
  15. import android.webkit.WebViewClient;
  16. import android.widget.Button;
  17. import android.widget.Toast;


  18. public class MainActivity extends Activity{
  19.     private WebView webview;
  20.     private Button button;
  21.     private Button button2;
  22.     @Override
  23.     protected void onCreate(Bundle savedInstanceState) {
  24.         super.onCreate(savedInstanceState);
  25.         getWindow().requestFeature(Window.FEATURE_NO_TITLE);
  26.         setContentView(R.layout.activity_main);
  27.         webview=(WebView)this.findViewById(R.id.webview);
  28.         button=(Button)this.findViewById(R.id.button);
  29.         button2=(Button)this.findViewById(R.id.button2);
  30.         /**
  31.          * 支持javascript,getSettings()返回一个WebSettings对象
  32.          */
  33.         webview.getSettings().setJavaScriptEnabled(true);

  34. // /**
  35. // * 类似浏览器客户端,可以点击链接进行网页的浏览
  36. // * WebViewClient对象无法执行javascript,需要使用WebChromeClient()执行javascript
  37. // */
  38. // webview.setWebViewClient(new WebViewClient() {
  39. // /**
  40. // * 监听接收网页错误
  41. // * @param view
  42. // * @param errorCode
  43. // * @param description
  44. // * @param failingUrl
  45. // */
  46. // @Override
  47. // public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
  48. // Toast.makeText(MainActivity.this, "Oh no! " + description, Toast.LENGTH_SHORT).show();
  49. // super.onReceivedError(view, errorCode, description, failingUrl);
  50. // }
  51. // /**
  52. // * 监听点击链接事件,当点击链接时刷新界面
  53. // * @param view
  54. // * @param url
  55. // * @return
  56. // */
  57. // @Override
  58. // public boolean shouldOverrideUrlLoading(WebView view, String url) {
  59. // view.loadUrl(url);
  60. // return true;
  61. // }
  62. // });

  63.         /**
  64.          * 浏览器客户端的第二种方式
  65.          * 要注意的是,WebChromeClient对新默认监听点击链接事件,当点击链接时刷新界面
  66.          */
  67.         webview.setWebChromeClient(new WebChromeClient(){
  68.             /**
  69.              * 一旦发现js有alert即执行js alert窗口
  70.              * @param view
  71.              * @param url
  72.              * @param message
  73.              * @param result
  74.              * @return 如果放回true,客户端需要在return之前自行写效果如alertDialog.builder提示,返回false则执行默认js效果
  75.              */
  76.             @Override
  77.             public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
  78.                 return super.onJsAlert(view, url, message, result);
  79.             }

  80.         });

  81.         /**
  82.          *测试客户端添加javascript
  83.          */
  84.         button2.setOnClickListener(new View.OnClickListener() {
  85.             @Override
  86.             public void onClick(View v) {
  87.                 class JsObject {
  88.                     @JavascriptInterface
  89.                     public String toString() { return "vibexie"; }
  90.                 }
  91.                 /**
  92.                  * 注意这里添加的一个injectedObject javascript对象可以被服务器端的js直接访问
  93.                  */
  94.                 webview.addJavascriptInterface(new JsObject(), "injectedObject");
  95.                 webview.loadData("", "text/html", null);
  96.                 webview.loadUrl("javascript:alert(injectedObject.toString())");
  97.             }
  98.         });

  99.         /**
  100.          * 加在页面
  101.          */
  102.         webview.loadUrl("");

  103.         /**
  104.          * 刷新按钮
  105.          */
  106.         button.setOnClickListener(new View.OnClickListener() {
  107.             @Override
  108.             public void onClick(View v) {
  109.                 webview.loadUrl("");
  110.             }
  111.         });
  112.     }


  113.     /**
  114.      * 监听点击事件
  115.      * @param keyCode
  116.      * @param event
  117.      * @return
  118.      */
  119.     @Override
  120.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  121.         /**
  122.          * 回退上一页,若无上页则退出
  123.          */
  124.         if(keyCode==KeyEvent.KEYCODE_BACK && webview.canGoBack()){
  125.             webview.goBack();
  126.             return true;
  127.         }
  128.         return super.onKeyDown(keyCode, event);
  129.     }
  130. }


index.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Insert title here</title>
  6. <script type="text/javascript">
  7.     function myAlert(){
  8.         alert(document.loginForm.username.value);
  9.     }
  10. </script>
  11. </head>
  12. <body>
  13. <div align="center">
  14. <form action="loginForm" method="post" name="loginForm">
  15.     <table border="1" bordercolor="#000000" cellspacing="0">
  16.         <tr>
  17.             <th>用户名</th>
  18.             <td><input type="text" name="username"/></td>
  19.         </tr>
  20.         <tr>
  21.             <th>密码</th>
  22.             <td><input type="password" name="password"/></td>
  23.         </tr>
  24.         <tr>
  25.             <td colspan="2" align="center">
  26.                 <input type="submit" name="submit" value="提交"/>
  27.             </td>
  28.         </tr>
  29.     </table>
  30.     <button onclick="myAlert()">显示用户名</button>
  31. </form>
  32. </div>
  33. </body>
  34. </html>


阅读(1339) | 评论(0) | 转发(0) |
0

上一篇:ViewPager Demo

下一篇:文件下载工具类

给主人留下些什么吧!~~