Android交互之-----activity与html互调数据
最近研究了android与Js交互,现在总结一下:
js给android页面传数据(两种)
《第一种》
1.在要嵌入HTML网页的activty页面的布局文件中写您自己的WebView
2.在此activity代码中写常规的webView的设置,这里只摘出最重要的一句,其他都是常规
webView.addJavascriptInterface(Object object, String name)
第一个参数:您需要当点击html页面某个组件时activity执行某个方法,或者将html页面上的数据带过来时需要执行activity某个方法,而这个方法所在的类就是这个参数(一般是咱们自定义类,然后里面写对应的方法)
class InJavaScript {
@JavascriptInterface
public void runOnAndroidJavaScript(final String str) {
Log.e("Log", "str = " + str);
handler.post(new Runnable() {
public void run() {
TextView show = (TextView) findViewById(R.id.textview);
show.setText(str);
}});
}}
注意这里面@JavascriptInterface 这个必须加,因为在android 4.4 以上 JS部分功能已经不能使用,如果不加这句,高版本不能执行到这个方法,方法名也是自定义的,只需要保证和html文件中相应的一致即可
【Android交互之-----activity与html互调数据】第二个参数:标示,类似于编号。
2.在html文件中,这方面可以先学一下html、js脚本基本语句,我也是看了一早上大概明白了一些,这里指出js通过接口调用android的函数
window.injs.runOnAndroidJavaScript(str);
//通过injs接口调用android的函数
这里的injs就是我们刚才addJavascriptInterface()方法的第二个参数名,根据这里的名字换成您自己的就行。而这个runOnAndroidJavaScript(str)就是刚才咱们自定义的类中自定义的方法,参数str就是我们需要从html页面组件中传给activity的信息。
《第二种》
主要在html文件中写,通过alert,大家可以了解一下js中的alert,
简单介绍一下:在android中弹窗是dialog,而js中弹窗是alert,但是当网页被迁入到webView中的时候,alert是不能弹窗的,这时候需要在activity端重新写弹窗,需要用到下面要说的方法setWebChromeClient。
在html某个按钮上添加动作
function ale()
{
alert("This is an alert!");
}
在activity代码中WebView的这个方法很关键:webView.setWebChromeClient:
辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等
webView.setWebChromeClient(new WebChromeClient(){public boolean onJsAlert(WebView view, String url, String message, JsResult result){。。。。}
WebChromeClient类有很多方法,具体可以去看源码,这里主要用到onJsAlert方法
这个方法的message就是alert的参数,所以我们只需要在此方法下根据不同的message做不同的事件或者获取数据即可。
写到这里,估计大家应该基本懂了,觉得有用请点赞。如果有疑惑,我上传了demo,可以下载:http://download.csdn.net/detail/zizhan8723/9694032
推荐阅读
- React报错之Type '() => JSX.Element[]' is not assignable
- AR|[AR Foundation] AR Foundation学习之路(持续记录)
- React报错之Type|React报错之Type '() => JSX.Element[]' is not assignable to type FunctionComponent
- 和前男友分手之后⊙▽⊙她竟
- 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-项目入口与路由EP01
- 基于Consul的分布式信号量实现
- 【0711晨读感悟】高效能人士的七分之三
- 投稿|中国游戏崛起之路:从东南亚一路打到美日韩
- Java多线程开发系列之五(Springboot|Java多线程开发系列之五:Springboot 中异步请求方法的使用)
- Android开发中常用的资源