最近复习html5+css3的编程,发现很多知识都有点模糊,哎,突然感悟好记性不如烂笔头的真理 。废话不多说,开始今天的学习之路:
安卓端加载html5的配置
首先配置布局为WebView。
web.getSettings().setJavaScriptEnabled(true);//此处打开加载js脚本,如果不设置会直接忽略js脚本而不执行。
web.setWebChromeClient(new WebChromeClient(){});//有人说我自己的alert()方法怎么不弹出,原因你是没设置这里。复写空方法就行。
web.loadUrl(“http://192.168.1.127/Myhtml5web/MyHtml.html“);//这里写上自己的网页地址。如果是在安卓工程地址:
myWebView.loadUrl(” file:///android_asset/demo.html “);
//打开本地sd卡内的demo.html文件
myWebView.loadUrl(“content://com.android.htmlfileprovider/sdcard/demo.html”);如果出现JS加载的时候页面还没加载完毕的情况:
web.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
到此所有的配置结束,下面介绍安卓与html5的通信,也是本文章的核心地方.
html5与安卓通信
html5调用安卓
首先在安卓端设置: web.addJavascriptInterface(new testjs(), “t”);
第一个参数:是个object 对象,就是传入的对象载体
第二个参数:是这个对象外部调用的又名。第二步,实现testjs类
“`ruby
class testjs {
@JavascriptInterface
public void test() {
Toast.makeText(Web.this, "周强最帅",
0).show();
}
}
```
** @JavascriptInterface这个注解在4.2以后必须加上,否则会报错**
第三步,在html5调用:
<h2 onclick="javascript:t.test()">
是不是很简单,这个方法可以传递参数的,和java方法一样的安卓调用html5的方法
首先在html5定义方法
function html5() { alert("我还是最帅的"); }
在安卓端调用
web.post(new Runnable() { @Override public void run() { web.loadUrl("javascript:html5()"); } });
至此安卓与html5互相通信结束。。