我爱编程

android和H5交互

2018-03-16  本文已影响0人  繁天涯

最近在做一个蓝牙项目,需要用到图表,感觉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最后

直接看代码吧:https://github.com/wxp19940506/AppTransHtml.git

上一篇下一篇

猜你喜欢

热点阅读