最近在做一个蓝牙项目,需要用到图表,感觉H5的图表要比android一些第三方控件要简单灵活一些,之前一直用的是原生开发,于是对android和H5交互传递数据做了一些研究,下面对最近的研究做一些记录:
第一种是直接调用JS里面的方法,不用等到页面加载完成,简单讲就是该js方法不需要写在onload方法里面或者Jquery的页面加载回调方法中。但是,要调用在在onload方法里面或者Jquery的页面加载回调方法中的方法,这样是不可以的,那么怎么做才能调用呢?看第二条。
1.用到的android原生控件是传统的WebView,还需要会一些简单的HTML5的基础知识。
//从xml中获取WebView控件对象
WebView wv=(WebView)findViewById(R.id.wb);
//获取WebView的Setting配置对象
WebSettings ws=wv.getSettings();
//设置WebView是否可以执行javascript
ws.setJavaScriptEnabled(true);
//设置WebView是否支持缩放
ws.setSupportZoom(true);
//创建WebViewClient对象
wv.setWebViewClient(new WebViewClient());
//创建WebViewChromeClient
wv.setWebChromeClient(new WebChromeClient());
2.html文件放到main下的assets目录下,使用的时候采用loadUrl()将“file:///android_asset/myAndroid.html”参数传递进来。
//将assets目录下的HTML加载到WebView
wv.loadUrl("file:///android_asset/myAndroid.html");
3.WebView有一个addJavascriptInterface()方法,可以获取从HTML文件中获取数据传递到android程序中,然后渲染原生控件。
//HTML数据传过来在android程序中的数据接口
wv.addJavascriptInterface(new AsForjs(this),"Android");
final String str="这是一个来自android的数据";
以上是简单调用js中不写入页面加载完成回调里面的方法,如果想调用这里面的方法,可以将script标签写到body最后
网友评论