Android与HTML的JS 交互

闲话少说

先看看 第一种方式

Android与HTML的JS 交互

要注意的是

addJavascriptInterface这个方法,第一个参数是个接口,用来在html里面调用的,可以接受html返回的数据,而接口的方法名上面,必须加 @JavascriptInterface,

而第二个参数,是用来做标识的,在HTML里面来标识这个接口。

再来看看html 

Android与HTML的JS 交互

这个html很简单,就一个按钮,点击后,执行了 showToast()方法,可以看到,这个app就是addJavascriptInterface的第二个参数,而makeToast()就是 我们在WebViewJavaScriptInterface里面自己定义的方法,这样就能把参数传给Android APP了。

当然,我们也可以直接监听HTML里面的方法,比如在html的showToast()方法里面 加一句 location.href = "http://www.baidu.com"; 就是点击按钮的时候,跳到百度,然后

我们在Android 端里判断

Android与HTML的JS 交互

当url为 http://www.baidu.com 的时候,直接就打印了LOG


然后,这种方法在Android  低版本的时候 可能会失效,所以,有另外一种方法可以试试


第二种方式

跟第一种方式类似

首先看看activity

Android与HTML的JS 交互

这里的new WebViewClient() 我用的是onPageFinished(),当加载完成后调用,当然,你也可以不用,可以看到,我做了一个判断,当SDK的版本大于4.4的时候,我用了evaluateJavascript方法,第一个参数 是 html里面的js方法,就是这个getId(String s),而第二个参数就是HTML返回的参数,当然,首先HTML得设置了返回值,而SDK版本少于4.4的时候,javascript:getId("596335")把这个当URL给webView就行,不过参数 记得转义,就是加那个  \"  ,再来看看 HTML,更简单了

Android与HTML的JS 交互

就一个方法,getId(id),这样 就能把参数传给HTML,当然,要返回给activity的话,直接加一个 return “aaa”;就行了,这样,就会在 onReceiveValue里面返回了,对了这个 

window.app.makeToast('sss', true);

跟方法一一样,传个参数回来。