html与Android

 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
 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 }
时间: 2024-11-07 17:37:53

html与Android的相关文章

android开发之onCreate( )方法详解

onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource d

如何用 Android Studio 导入开源项目以及常见错误的解决办法

声明:这篇文章完全来自这篇文章,感谢大神的相助.这篇文章纯粹是为了备份. 本篇以Github上最热门的MaterialDesign库,MaterialDesignLibrary来介绍怎样使用Android Sudio导入开源项目的,如果你和我一样刚刚从Eclipse转到AS,那本篇文章非常适合你. 如果不引入任何第三方库,不做自动化分渠道打包等操作,那可以在完全不了解Gradle的情况下进行Android项目的开发.但如果要想导入Github上的热门项目,必须首先熟悉Gradle. 1. Gra

Android——调用高德地图API前期准备

1.登陆高德开放平台注册账号http://lbs.amap.com/ 2.创建自己的应用并且添加新key 获取发布版安全码获取方法: 在AndroidStudio的Terminal中编译: 输入如下图: 开发版安全码获取: 开发版获取的另一种方法:(和获取发布版本一样在AndroidStudio的Terminal中编译 只是keystore的路径改成debug.keystore    密钥库口令默认是android) 创建key成功 得到key: 前期准备完成 下一篇文章是开发配置 备忘 ,也希

Android小例子:使用反射机制来读取图片制作一个图片浏览器

效果图: 工程文件夹: 该例子可供于新手参考练习,如果有哪里不对的地方,望指正>-< <黑幕下的人> java代码(MainActivity.java): package com.example.imageswitchtest; import java.lang.reflect.Field; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.v

Android Studio 安装及常见问题

今年放假比去年早了一些,就提前回来了.感觉挺爽,结果教研室电脑没有带回来,悲剧是导师让我维护一下以前的项目,只能屁颠屁颠的搞起呀.只能用自己的笔记本搭建android开发环境.由于前阶段听说Android Studio用着爽歪歪,于是尝试在超卡的笔记本上跑Android Studio.哇咔咔,费了九牛二虎之力终于将Android Studio玩转了.先上个图,快过年了,祝大家新年快乐! Android官网也开始推广Android Studio了,以前官网好像提供Eclipse和ADT打包下载,现

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

TabLayout 一.继承结构 public class TabLayout extends HorizontalScrollView java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.HorizontalScrollView ? android.support.design.widget.TabLayout 二.TabLayou

Android Studio 连接真机不识别

本人也是初学..写错的请大神多多批评指正! 不胜荣幸!! 强烈推荐使用真机测试..除非是最后关头要测试各个Android系统版本.. 本人遇到的连不上的原因有以下几种: 1  --   手机设置问题.开USB调试   方法:  手机设置 - 开发人员选项 - USB调试  - 勾选 2  --   数据线问题.  有的数据线只能用来充电,有的可以连接存储.识别方法很简单..插上机器有USB存储设备的提示的就可以用.另外数据线如果都露线皮了..就赶紧扔了.十块八块的总比你为这个破问题纠结一下午的好

android Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化

生命周期Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情.例举了 7 个常用的钩子:protected void onCreate(Bundle savedInstanceState)protected void onStart()protected void onResume()protected void onPause()protected void onStop()protected void onRestart()protecte

谈谈-Android中的接口回调技术

Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James对Android接口回调技术的理解(结合前人的知识和自己的实践). 使用一个比喻很形象地说明:客户端有个疑问打电话请教服务端,但服务端无法现场给出解答,相互之间约定:服务端一旦有答案,使用电话的方式反馈给客户端. 以上有三个主体:客户端.服务端和接口(方式). 接口回调的原理框图说明: Demo界面

修改Android Studio默认的API Level(SDK版本)

原文:修改Android Studio默认的API Level(SDK版本) Android Studio(2.1.2)新建工程的时候只会让你选择最低支持的SDK版本,默认的目标编译SDK版本会以系统当前SDK中最新SDK platform作为目标的API Level.但是很多时候我们并不需要最新的SDK版本,如何修改呢? 方法是:修改工程目录中的Gradle Scripts->build.gradle(Module:app)中的相关行,具体见下图: 当然也可以图形化操作,右键工程目录选择"