android与JS交互

WebView是Android与JS之间交互桥梁,我们是通过WebView来实现他们的相互调用。 

首先初始化WebView的时候要添加对JavaScript的支持,

WebView.getSettings().setJavaScriptEnabled(true);启用对Js的支持。

Android调用JS代码的方法有2种:

1. 通过WebView的loadUrl()

2. 通过WebView的evaluateJavascript()

loadUrl和evaluateJavascript的区别

loadUrl:

使用起来方便简洁。

但是他是在没有返回的情况下使用。

效率比较低,获取返回值的时候很麻烦。

并且调用的时候会刷新WebView

evaluateJavascript:

效率比loadUrl ()高很多

虽然效率高但是只支持Android4.4以上

在获取返回值时候很方便

调用时候不刷新WebView

js跟Android交互首先要给Android添加,一个JavascriptInterface注解,

然后给WebView绑定你的JavascriptInterface调用addJavaScripInterface,这个方法中有两个参数,第一个需要传一个自定义类的对象,第二个参数是别名,js通过这个别名来调用java中的函数.

对于JS调用Android代码的方法有3种:

1. 通过WebView的addJavascriptInterface()进行对象映射

2. 通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url

3. 通过 WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt() 消息

三种区别

1)addJavascriptInterface ()使用起来方便简洁,但是再Android低版本下有问题,用于Android4.2以上

2)shouldOverrideUrlLoading ()使用起来没有漏洞,但是使用起来比较负责,主要用于不需要返回值的情况

3)onJsAlert()、onJsConfirm()、onJsPrompt()拦截JS中的对话框alert() / confirm() / prompt()

和第二种方式一样,没有漏洞,而且也复杂,并且需要进行协议的约束。

android与JS交互_第1张图片

你可能感兴趣的:(android与JS交互)