android和H5交互

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容