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人。