html与Android——webView

<html>
<head>
<title>myHtml.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<!-- 此处编写JavaScript --js -->
<script language="javascript">
//定义函数,验证表单信息是否合法
function checkAll(ele){
alert(ele);
//验证用户名不为空
var name = document.getElementById("id1");//得到用户名输入框对象
var nameValue = name.value;//得到具體的值
if(nameValue.length<=0){//驗證
// document.getElementById("div1").innerHTML="<font size='4' color='red'>用户名不能为空</font>";
alert("用户名不能为空,请填写");
return;
}else{
document.getElementById("div1").innerHTML="";
}
//驗證密碼
var pass = document.getElementById("id2");//得到密码输入框对象
var passValue = pass.value;
if(passValue.length < 6){
// document.getElementById("div2").innerHTML="<font size='4' color='red'>密码长度不能小于6位</font>";
alert("密码长度不能小于6位");
return;
}else{
document.getElementById("div2").innerHTML="";
}
//验证邮箱
var email = document.getElementById("id3");//得到邮箱输入框对象
var emailValue = email.value;
if(emailValue.indexOf("@") == -1){
//普通的js代码可以通过设置WebSetting实现有效
// document.getElementById("div3").innerHTML="<font size='4' color='red'>邮箱不包含@!</font>";
alert("邮箱不包含@,请检查!");//通过webchromClient设置有效
return;
}else{
document.getElementById("div3").innerHTML="";
}

//输入项都符合要求,提交表单,但是做一个确认的提醒
if(confirm("确认提交吗?")){
// document.getElementById("form1").submit();
//把表单中的信息传递到android代码中,通过调用android传递过来的对象myclass
window.myclass.sendData(nameValue,passValue,emailValue);
}

}

</script>

</head>

<body>
<form id="form1" action="success.html">
<center>
<table >
<tr align="center"><td colspan="2"><a href="http://www.baidu.com">百度</a></td></tr>
<tr><td>用户名:</td><td width="150"><input type="text" id="id1" name="username"/><div style="display:inline" id="div1"></div></td></tr>
<tr><td>密码:</td><td width="150"><input type="password" id="id2" name="userpass"/><div style="display:inline" id="div2"></div></td></tr>
<tr><td>邮箱:</td><td width="150"><input type="text" id="id3" name="email"/><div style="display:inline" id="div3"></div></td></tr>
<tr ><td align="center" colspan="2"><input type="button" οnclick="checkAll('开始验证');" value="提交(app)"/></td></tr>
</table>
<center>
</form>
</body>
</html>

 
  

package com.ch.day9_webviewdemo;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.spec.EncodedKeySpec;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.util.Log;
import android.util.Xml.Encoding;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.JavascriptInterface;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
private Button goback;
private Button tj;
public static final String HTML_URL = "http://169.254.70.111:8080/serverof1407a/myHtml.html";

private TextView tv;
private WebView wv;
Context mcontext;

class MyClass1{
@JavascriptInterface
public void sendData(String name,String pass,String email){
Toast.makeText(mcontext, name+","+pass+","+email, 0).show();
//网络连接,发送到服务器保存,同时也可以保存到本地sqlite



//跳转到注册成功页面
// Intent it = new Intent(mcontext,第二个页面);
}
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mcontext = this;
init();
}

public void init(){
wv = (WebView) findViewById(R.id.wv);
goback = (Button) findViewById(R.id.goback);
tj = (Button) findViewById(R.id.tj);
//点击 提交,通过android调用js的checkAll函数
tj.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
wv.loadUrl("javascript:checkAll('android调用的验证')");
}
});

WebSettings setting = wv.getSettings();//获得websetting,设置一些参数
setting.setDefaultTextEncodingName("utf-8");//设置编码,解决乱码
//设置普通js有效
setting.setJavaScriptEnabled(true);

//第一种方式加载现成的html(两个来源:网络+本地)
// wv.loadUrl(HTML_URL);//加载服务器的html资源
wv.loadUrl("file:///android_asset/myHtml.html");//加载本地assets下的html
//向js中推入一个对象,供调用
wv.addJavascriptInterface(new MyClass1(), "myclass");

//监听webview的url的重新定位
wv.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
Log.i("TAG", "当前webview加载的新url:::"+url);
// if(url.equals("http://www.baidu.com/")){
// wv.loadUrl("http://www.jd.com");
// }
return super.shouldOverrideUrlLoading(view, url);

}
});
//处理alert无效
wv.setWebChromeClient(new WebChromeClient(){
//处理alert无效,当js弹出alert框的时候,会调用这个方法
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
// TODO Auto-generated method stub
//用dialog对话框替代系统自带的alert弹出
result.cancel();//关闭系统和自带的alert警告框
//创建android的对话框替换
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("警告框").setIcon(R.drawable.ic_launcher).setMessage(message)
.setPositiveButton("确定", null)
.create().show();

return true;
}
//处理confirm无效,当js弹出confirm框的时候,会调用这个方法
@Override
public boolean onJsConfirm(WebView view, String url,
String message, final JsResult result) {
// TODO Auto-generated method stub

//创建android的对话框替换
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("确认提示框").setIcon(R.drawable.ic_launcher).setMessage(message)
.setPositiveButton("确定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();//点击dailog的确认,提交系统的确认框
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
result.cancel();//点击dailog的取消,取消系统的确认框
}
})
.create().show();
return true;
}
});

//
goback.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(wv.canGoBack()){
wv.goBack();//后退
// wv.goForward();//前进
// wv.zoomIn();//放大
// wv.zoomOut();//缩小
}

}
});



// //第二种方式加载现拼写的html
// StringBuffer sb = new StringBuffer();
// sb.append("<html><head></head><body><input type='submit' value='提交(app'/></body></html>");
// wv.loadData(sb.toString(), "text/html", "utf-8");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}

 
  

转载于:https://www.cnblogs.com/nanze/p/5384465.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值