1 <html>
2 <head>
3 <title>myHtml.html</title>
4
5 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
6 <meta http-equiv="description" content="this is my page">
7 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
8
9 <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
10 <!-- 此处编写JavaScript --js -->
11 <script language="javascript">
12 //定义函数,验证表单信息是否合法
13 function checkAll(ele){
14 alert(ele);
15 //验证用户名不为空
16 var name = document.getElementById("id1");//得到用户名输入框对象
17 var nameValue = name.value;//得到具體的值
18 if(nameValue.length<=0){//驗證
19 // document.getElementById("div1").innerHTML="<font size='4' color='red'>用户名不能为空</font>";
20 alert("用户名不能为空,请填写");
21 return;
22 }else{
23 document.getElementById("div1").innerHTML="";
24 }
25 //驗證密碼
26 var pass = document.getElementById("id2");//得到密码输入框对象
27 var passValue = pass.value;
28 if(passValue.length < 6){
29 // document.getElementById("div2").innerHTML="<font size='4' color='red'>密码长度不能小于6位</font>";
30 alert("密码长度不能小于6位");
31 return;
32 }else{
33 document.getElementById("div2").innerHTML="";
34 }
35 //验证邮箱
36 var email = document.getElementById("id3");//得到邮箱输入框对象
37 var emailValue = email.value;
38 if(emailValue.indexOf("@") == -1){
39 //普通的js代码可以通过设置WebSetting实现有效
40 // document.getElementById("div3").innerHTML="<font size='4' color='red'>邮箱不包含@!</font>";
41 alert("邮箱不包含@,请检查!");//通过webchromClient设置有效
42 return;
43 }else{
44 document.getElementById("div3").innerHTML="";
45 }
46
47 //输入项都符合要求,提交表单,但是做一个确认的提醒
48 if(confirm("确认提交吗?")){
49 // document.getElementById("form1").submit();
50 //把表单中的信息传递到android代码中,通过调用android传递过来的对象myclass
51 window.myclass.sendData(nameValue,passValue,emailValue);
52 }
53
54 }
55
56 </script>
57
58 </head>
59
60 <body>
61 <form id="form1" action="success.html">
62 <center>
63 <table >
64 <tr align="center"><td colspan="2"><a href="http://www.baidu.com">百度</a></td></tr>
65 <tr><td>用户名:</td><td width="150"><input type="text" id="id1" name="username"/><div style="display:inline" id="div1"></div></td></tr>
66 <tr><td>密码:</td><td width="150"><input type="password" id="id2" name="userpass"/><div style="display:inline" id="div2"></div></td></tr>
67 <tr><td>邮箱:</td><td width="150"><input type="text" id="id3" name="email"/><div style="display:inline" id="div3"></div></td></tr>
68 <tr ><td align="center" colspan="2"><input type="button" onclick="checkAll('开始验证');" value="提交(app)"/></td></tr>
69 </table>
70 <center>
71 </form>
72 </body>
73 </html>
  1 package com.ch.day9_webviewdemo;
2
3 import java.io.UnsupportedEncodingException;
4 import java.net.URLEncoder;
5 import java.security.spec.EncodedKeySpec;
6
7 import android.os.Bundle;
8 import android.app.Activity;
9 import android.app.AlertDialog;
10 import android.content.Context;
11 import android.content.DialogInterface;
12 import android.util.Log;
13 import android.util.Xml.Encoding;
14 import android.view.Menu;
15 import android.view.View;
16 import android.view.View.OnClickListener;
17 import android.webkit.JavascriptInterface;
18 import android.webkit.JsResult;
19 import android.webkit.WebChromeClient;
20 import android.webkit.WebSettings;
21 import android.webkit.WebView;
22 import android.webkit.WebViewClient;
23 import android.widget.Button;
24 import android.widget.ExpandableListView;
25 import android.widget.TextView;
26 import android.widget.Toast;
27
28 public class MainActivity extends Activity {
29 private Button goback;
30 private Button tj;
31 public static final String HTML_URL = "http://169.254.70.111:8080/serverof1407a/myHtml.html";
32
33 private TextView tv;
34 private WebView wv;
35 Context mcontext;
36
37 class MyClass1{
38 @JavascriptInterface
39 public void sendData(String name,String pass,String email){
40 Toast.makeText(mcontext, name+","+pass+","+email, 0).show();
41 //网络连接,发送到服务器保存,同时也可以保存到本地sqlite
42
43
44
45 //跳转到注册成功页面
46 // Intent it = new Intent(mcontext,第二个页面);
47 }
48 }
49
50 @Override
51 protected void onCreate(Bundle savedInstanceState) {
52 super.onCreate(savedInstanceState);
53 setContentView(R.layout.activity_main);
54 mcontext = this;
55 init();
56 }
57
58 public void init(){
59 wv = (WebView) findViewById(R.id.wv);
60 goback = (Button) findViewById(R.id.goback);
61 tj = (Button) findViewById(R.id.tj);
62 //点击 提交,通过android调用js的checkAll函数
63 tj.setOnClickListener(new OnClickListener() {
64 @Override
65 public void onClick(View v) {
66 wv.loadUrl("javascript:checkAll('android调用的验证')");
67 }
68 });
69
70 WebSettings setting = wv.getSettings();//获得websetting,设置一些参数
71 setting.setDefaultTextEncodingName("utf-8");//设置编码,解决乱码
72 //设置普通js有效
73 setting.setJavaScriptEnabled(true);
74
75 //第一种方式加载现成的html(两个来源:网络+本地)
76 // wv.loadUrl(HTML_URL);//加载服务器的html资源
77 wv.loadUrl("file:///android_asset/myHtml.html");//加载本地assets下的html
78 //向js中推入一个对象,供调用
79 wv.addJavascriptInterface(new MyClass1(), "myclass");
//解析数据后加载页面
80 // webView.loadData(string, "text/html;charset=utf-8", "utf-8");

81 //监听webview的url的重新定位
82 wv.setWebViewClient(new WebViewClient(){
83 @Override
84 public boolean shouldOverrideUrlLoading(WebView view, String url) {
85 // TODO Auto-generated method stub
86 Log.i("TAG", "当前webview加载的新url:::"+url);
87 // if(url.equals("http://www.baidu.com/")){
88 // wv.loadUrl("http://www.jd.com");
89 // }
90 return super.shouldOverrideUrlLoading(view, url);
91
92 }
93 });
94 //处理alert无效
95 wv.setWebChromeClient(new WebChromeClient(){
96 //处理alert无效,当js弹出alert框的时候,会调用这个方法
97 @Override
98 public boolean onJsAlert(WebView view, String url, String message,
99 JsResult result) {
100 // TODO Auto-generated method stub
101 //用dialog对话框替代系统自带的alert弹出
102 result.cancel();//关闭系统和自带的alert警告框
103 //创建android的对话框替换
104 AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
105 dialog.setTitle("警告框").setIcon(R.drawable.ic_launcher).setMessage(message)
106 .setPositiveButton("确定", null)
107 .create().show();
108
109 return true;
110 }
111 //处理confirm无效,当js弹出confirm框的时候,会调用这个方法
112 @Override
113 public boolean onJsConfirm(WebView view, String url,
114 String message, final JsResult result) {
115 // TODO Auto-generated method stub
116
117 //创建android的对话框替换
118 AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
119 dialog.setTitle("确认提示框").setIcon(R.drawable.ic_launcher).setMessage(message)
120 .setPositiveButton("确定", new DialogInterface.OnClickListener(){
121 @Override
122 public void onClick(DialogInterface dialog, int which) {
123 result.confirm();//点击dailog的确认,提交系统的确认框
124 }
125 })
126 .setNegativeButton("取消", new DialogInterface.OnClickListener(){
127 @Override
128 public void onClick(DialogInterface dialog, int which) {
129 result.cancel();//点击dailog的取消,取消系统的确认框
130 }
131 })
132 .create().show();
133 return true;
134 }
135 });
136
137 //
138 goback.setOnClickListener(new OnClickListener() {
139 @Override
140 public void onClick(View v) {
141 if(wv.canGoBack()){
142 wv.goBack();//后退
143 // wv.goForward();//前进
144 // wv.zoomIn();//放大
145 // wv.zoomOut();//缩小
146 }
147
148 }
149 });
150
151
152
153 // //第二种方式加载现拼写的html
154 // StringBuffer sb = new StringBuffer();
155 // sb.append("<html><head></head><body><input type='submit' value='提交(app'/></body></html>");
156 // wv.loadData(sb.toString(), "text/html", "utf-8");
157 }
158
159 @Override
160 public boolean onCreateOptionsMenu(Menu menu) {
161 // Inflate the menu; this adds items to the action bar if it is present.
162 getMenuInflater().inflate(R.menu.activity_main, menu);
163 return true;
164 }
165
166 }

html与Android——webView的更多相关文章

  1. Android WebView 302斗争之旅

    一.背景 越来越多的业务接入,项目内多多少少会出现几个H5页面,只是单纯的提供WebView容器接入H5页面根本满足不了需求,他们需要登录态,需要制定协议控制Native的导航栏,或者需要JsBrid ...

  2. Android WebView useragent

    今天介绍一下Android WebView UserAgent, User-Agent(简称UA)是HTTP请求头部用来标识客户端信息的字符串, 包括操作系统, 浏览器等信息.为了建立手机客户端的信息 ...

  3. android webview开发问题及优化汇总

    我们在native与网页相结合开发的过程中,难免会遇到关于WebView一些共通的问题.就我目前开发过程中遇到的问题以及最后得到的优化方案都将在这里列举出来.有些是老生常谈,有些则是个人摸索得出解决方 ...

  4. Android WebView 开发教程

    声明在先:必须在AndroidMainfest.xml 里面声明权限,否则在Java里面编写的所有WebView浏览网页的代码都无法正常使用 <uses-permission android:n ...

  5. [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案

    [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案 问题情景 在Android里,可以使用WebView来呈现本地或是远程的网页内容.但是在显示本地网页时,如 ...

  6. Android webview通过http get下载文件下载两次的问题及解决方法

    一.现象 一般通过Android webview进行下载文件的方法是 1.重写DownloadListener的onDownloadStart方法,在onDownloadStart方法中弹出对话框提示 ...

  7. Android WebView常见问题及解决方案汇总

    Android WebView常见问题解决方案汇总: 就目前而言,如何应对版本的频繁更新呢,又如何灵活多变地展示我们的界面呢,这又涉及到了web app与native app之间孰优孰劣的争论. 于是 ...

  8. android webview 底层实现的逻辑

    其实在不同版本上,webview底层是有所不同的. 先提供个地址给大家查:http://grepcode.com/file/repository.grepcode.com/java/ext/com.g ...

  9. Android WebView访问SSL证书网页(onReceivedSslError)

    Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...

  10. Android WebView常见问题解决方案汇总

    问题目录: 1.为WebView自定义错误显示界面: 2.WebView cookies清理 3.清理cache 和历史记录 4.判断WebView是否已经滚动到页面底端 5.URL拦截 6.处理We ...

随机推荐

  1. 页面引入flash

    function shFlashObj(id, data, oWidth, oHeight, flashvals,beFullScreen) {    var swf='<object id=& ...

  2. alternatives命令用法

    alternatives是Linux下的一个功能强大的命令.只能在根权限下执行.如系统中有几个命令功能十分类似,却又不能随意删除,那么可以用替代指定一个全局的设置.alternatives常用于同一个 ...

  3. vi 技巧和诀窍~转IBM

    复合搜索 1 #!/bin/ksh 2 # 3 echo "Starting" 4 file=${1} 5 6 echo ${file} 7 8 if [[ ${file} = 1 ...

  4. 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat

    阿里云服务器Linux CentOS安装配置(四)yum安装tomcat 1.yum -y install tomcat  执行命令后,会帮你把jdk也安装好 2.tomcat安装目录:/var/li ...

  5. 配合 APP 调用 JS 的一次尝试

    项目初衷 最初的场景是用户在对购物车的操作中,由于用户对购物车的每次操作(包括选择,调整数量)都需要计算商品的促销和分组的情况,而这段逻辑的计算都需要调用后端的接口,那么瓶颈来了: 请求时间长--一次 ...

  6. Oracle 语法

    1.行转列函数 11gR2以前: WM_CONCAT函数, 使用方式形如: SELECT SUS_SNO,WM_CONCAT(SRC_FILENAME) AS AAA FROM AML_SUS_TRD ...

  7. 如何在使用itext生成pdf文档时给文档添加背景图片

    这个问题我在网上搜了很久,没有找到什么解决方案,需求其实很简单,就是添加背景图片.在解决这个问题之前,我们需要了解什么是背景图片?背景图片就是位于文档最底层的图片,文字和其他内容可以浮在它的上面.这又 ...

  8. iOS推送遇到的问题

    1. 推送证书过期. 同事说iOS客户端不能推送消息,发现推送证书过期了,苹果的推送证书有效期是一年,推送证书过期后就不能使用推送服务了.解决办法:重新请求推送证书,导出p12文件,传给后台服务器就可 ...

  9. iOS基于MVC的项目重构总结

    关于MVC的争论 关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文). 行 ...

  10. LVM 'Can’t open /dev/sdb1 exclusively. Mounted filesystem?' Problem

    服务器做mysql时候,添加的新磁盘做lvm时候,创建物理卷报错 saltstack_s:/proc/scsi # cat /proc/partitions major minor #blocks n ...