html和js交互

package com.bawei.webviewdemo;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


/**
 * webview使用
 * 1.布局文件中声明一个<WebView />
 * 2.在清单列表中加Internet
 * 代码:
 * WebSettings ws = webview.getSettings();
 * a.支持JavaScript脚本
 * b.编码格式
 * c.缓存使用机制
 * d.支持缩放
 * 
 * webview渲染html页面的一些效果处理
 * webview.setWebViewClient();
 * webview和js相关的处理
 * webview.setWebChromeClient();
 * 
 * webview、js交互
 * 1.js调用Android方法
 * 	 a.封装Android方法时,修饰符public,并且加上注解@javascriptInterface(android 4.0上)
 *   b.webview.addJavascriptInterface(方法所属对象,js中别名);
 *   js调用时:别名.方法名();
 * 2.Android调用js函数
 * 	webview.loadUrl("javascript:方法名()");
 * 
 * @author lina
 *
 */
public class MainActivity extends Activity {

	private WebView view;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.activity_main);
		
		
		view = (WebView)findViewById(R.id.wv);
		
		WebSettings setting = view.getSettings();
		
		//设置webview支持JavaScript脚本
		setting.setJavaScriptEnabled(true);
		//设置编码格式
		setting.setDefaultTextEncodingName("utf-8");
		//支持缩放
		setting.setSupportZoom(true);
		
		//设置缓存是否可用
//		setting.setAppCacheEnabled(false);
		
		//js调用Android方法,参数1.调用方法的所属对象     参数2.别名(js中要用的对象名)
		view.addJavascriptInterface(this, "LoginActivity");
		
		view.loadUrl("file:///android_asset/index.html");
		
		
		
		//覆写webview默认使用第三方或默认浏览器打开网页的行为,关于渲染html页面的一些效果处理
		view.setWebViewClient(new WebViewClient(){
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				
				view.loadUrl(url);
				return true;
			}
			
		});
		
		//处理js一些操作
		view.setWebChromeClient(new WebChromeClient(){
			@Override
			public boolean onJsAlert(final WebView view, final String url, String message,
					final JsResult result) {
				
				//使用Android的对话框来替代网页中的
				new AlertDialog.Builder(MainActivity.this).setMessage(message).setTitle("提示框")
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						
						//Android调用js函数
						view.loadUrl("javascript:hint('test...')");
						
						//点击确定按钮后,把操作权还给html页面
						result.confirm();
						
					}
				}).show();
				
				
				return true;
			}
			
			@Override
			public boolean onJsConfirm(WebView view, String url,
					String message, JsResult result) {
				
				
				return true;
			}
			
		});
	
		
	}
	
	
	//js要调用的方法:a.必须是public,b.Android4.0以上都要在方法名上面加上注解@JavascriptInterface
	@JavascriptInterface
	public boolean check(String user,String pwd){
		boolean b = false;
		
		//去取值 验证传来的用户名、密码是否正确
		if(user.equals("地主")){
			b = true;
		}
		
		return b;
	}
	
	
	
	public void zoomOut(View v){
		view.zoomOut();
	}
	
	public void zoomIn(View v){
		view.zoomIn();
	}


}
HTML
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>hello world</title>
    <script type="text/javascript">
    	function login(){
			var uname = document.getElementById("uname").value;
			var pwd = document.getElementById("pwd").value;
			
			if(uname == "" && pwd ==""){
				alert("用户名或密码不能为空!");
				document.getElementById("uname").focus();
			}else{
				//我希望调用Android中check方法
				var flag = LoginActivity.check(uname,pwd);
				alert(flag);
			}
		}
   		
    </script>
</head>
<body>
	<input type="text" name="uname" id="uname" value="" />
	<input type="text" name="pwd" id="pwd" value="" />
	<input type="button" id="login" value="login" οnclick="login()"/>   
	<a href="register.html">注册</a>
</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值