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

来源:互联网 发布:淘宝账户已被冻结 编辑:程序博客网 时间:2024/06/08 10:01

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





原创粉丝点击