Android 3.0 以上系统 webView 无法在html中传值的解决办法

android2.2 以前,webView 是支持html之间传值的,传值的方式很简单,就像是普通get请求一样。例如,“index.html?a=1”,在index.html中使用javascript获取到问号后面的传值,即"a=1",然后就可以得到a的值了。但是,自从android 3.0后,忽然webview就不支持这种方便快捷的功能了,你想在一个activity里向一个html文件传几个参数都十分困难。只要你使用"index.html?XXX"这种方式加载一个静态页面,就会出现找不到该文件的错误,因此不得不采取其他方法给html页面里面传值。

1、首先你得熟悉一个webview的函数addJavascriptInterface(),这个函数可以将你要想传的值传到html页面中去。在使用这个函数之前,你得做两件事。

A) webView.getSettings().setJavaScriptEnabled(true);这个就不需要解释了

B) 在java里面构造一个javascript接口,其实是一个类,这个类可以有几个类属性。这里我构造了一个类:

/**
 * @description
 * @author wenfeng
 * 2012-7-26
 */
public class HtmlContent {

	public static String str="";
	public String getContent()
	{
		return str;
	}
	public void setContent(String content)
	{
		str=content;
	}
}
2、现在开始往html里面传值:

A) 比如我要将一个服务器的地址传到html里面去,即"http://localhost:8080"这个值html需要得到。这个时候首先将值封装到已经构造好的javascript接口里面去:

String host="http://localhost:8080";
HtmlContent hc=new HtmlContent();
hc.setContent(url);
B) 然后使用上面的那个函数,将这个javascript接口添加到webView里面去。
webView.addJavascriptInterface(hc, "HtmlContent");

C) 最后使用loadurl函数,加载html页面

webView.loadUrl("file:///android_asset/login.html");

3、最后是在html里面如何得到传进来的值

<script language="javascript" type="text/javascript">
 var urlContent=window.HtmlContent.getContent();
 var host=urlContent;
 document.write(urlContent);
 </script> 

通过这三个步骤你就可稳稳当当的向html里面传值啦。


注:转载请注明出处,咱要做一个文明的IT人。





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值