Android与HTML的JS 交互
2017-05-25 11:19
190 查看
闲话少说
先看看 第一种方式
![](http://img.blog.csdn.net/20170525104338785?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFubWFudGlhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
要注意的是
addJavascriptInterface这个方法,第一个参数是个接口,用来在html里面调用的,可以接受html返回的数据,而接口的方法名上面,必须加 @JavascriptInterface,
而第二个参数,是用来做标识的,在HTML里面来标识这个接口。
再来看看html
![](http://img.blog.csdn.net/20170525105149732?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFubWFudGlhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这个html很简单,就一个按钮,点击后,执行了 showToast()方法,可以看到,这个app就是addJavascriptInterface的第二个参数,而makeToast()就是 我们在WebViewJavaScriptInterface里面自己定义的方法,这样就能把参数传给Android APP了。
当然,我们也可以直接监听HTML里面的方法,比如在html的showToast()方法里面 加一句 location.href = "http://www.baidu.com"; 就是点击按钮的时候,跳到百度,然后
我们在Android 端里判断
![](http://img.blog.csdn.net/20170525110024971?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFubWFudGlhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
当url为 http://www.baidu.com 的时候,直接就打印了LOG
然后,这种方法在Android 低版本的时候 可能会失效,所以,有另外一种方法可以试试
第二种方式
跟第一种方式类似
首先看看activity
![](http://img.blog.csdn.net/20170525110537428?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFubWFudGlhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里的new WebViewClient() 我用的是onPageFinished(),当加载完成后调用,当然,你也可以不用,可以看到,我做了一个判断,当SDK的版本大于4.4的时候,我用了evaluateJavascript方法,第一个参数 是 html里面的js方法,就是这个getId(String s),而第二个参数就是HTML返回的参数,当然,首先HTML得设置了返回值,而SDK版本少于4.4的时候,javascript:getId("596335")把这个当URL给webView就行,不过参数
记得转义,就是加那个 \" ,再来看看 HTML,更简单了
![](http://img.blog.csdn.net/20170525111404103?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWFubWFudGlhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
就一个方法,getId(id),这样 就能把参数传给HTML,当然,要返回给activity的话,直接加一个 return “aaa”;就行了,这样,就会在 onReceiveValue里面返回了,对了这个
window.app.makeToast('sss', true);
跟方法一一样,传个参数回来。
先看看 第一种方式
要注意的是
addJavascriptInterface这个方法,第一个参数是个接口,用来在html里面调用的,可以接受html返回的数据,而接口的方法名上面,必须加 @JavascriptInterface,
而第二个参数,是用来做标识的,在HTML里面来标识这个接口。
再来看看html
这个html很简单,就一个按钮,点击后,执行了 showToast()方法,可以看到,这个app就是addJavascriptInterface的第二个参数,而makeToast()就是 我们在WebViewJavaScriptInterface里面自己定义的方法,这样就能把参数传给Android APP了。
当然,我们也可以直接监听HTML里面的方法,比如在html的showToast()方法里面 加一句 location.href = "http://www.baidu.com"; 就是点击按钮的时候,跳到百度,然后
我们在Android 端里判断
当url为 http://www.baidu.com 的时候,直接就打印了LOG
然后,这种方法在Android 低版本的时候 可能会失效,所以,有另外一种方法可以试试
第二种方式
跟第一种方式类似
首先看看activity
这里的new WebViewClient() 我用的是onPageFinished(),当加载完成后调用,当然,你也可以不用,可以看到,我做了一个判断,当SDK的版本大于4.4的时候,我用了evaluateJavascript方法,第一个参数 是 html里面的js方法,就是这个getId(String s),而第二个参数就是HTML返回的参数,当然,首先HTML得设置了返回值,而SDK版本少于4.4的时候,javascript:getId("596335")把这个当URL给webView就行,不过参数
记得转义,就是加那个 \" ,再来看看 HTML,更简单了
就一个方法,getId(id),这样 就能把参数传给HTML,当然,要返回给activity的话,直接加一个 return “aaa”;就行了,这样,就会在 onReceiveValue里面返回了,对了这个
window.app.makeToast('sss', true);
跟方法一一样,传个参数回来。
相关文章推荐
- Android实现js及webview交互之在html页面中调用系统摄像头
- android js与html 交互
- HTML---Android与js交互实例
- Android之利用JSBridge库实现Html,JavaScript与Android的所有交互
- android 与html交互java调js与js调java操作
- android中webView和html中js的交互
- Android java与html js交互 html视频播放没有画面 画面卡顿
- Android WebView使用全面解析(加载网络资源、本地HTML,JS交互)
- JS与Android交互之html页面跳转到Android Activity
- HTML---Android中webview和js之间的交互
- android 开发之webview解析html,js数据交互
- 通过Dreamweaver画图把android复杂多点击的页面转换成html,再通过android和js的交互实现点击
- Android 中 native与Html中Js 交互
- Android的webview加载本地html、assert内html和网络URL&&& JS与移动端webview的相互交互
- android中java与js通信(可以用html来做页面,进行交互)
- Android项目中的assert文件下的html里的js交互
- Android之利用JSBridge库实现Html,JavaScript与Android的所有交互
- Android WebView使用全面解析(加载网络资源、本地HTML,JS交互)
- Android与Html&JS交互
- Android 与JS交互 调用本地相册在Html页面显示图片