<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