接着上一篇《WebView简单使用》加载好界面之后要有一个需求就是当用户点击页面上的一个按钮时,JS要调用Android本地的方法,下面就说下JS怎样调用Android本地的方法的:
首先需要先配置WebView可以调用JS方法的权限,
WebSettings webSettings = mWebView .getSettings();
webSettings.setJavaScriptEnabled(true);
然后需要声明一个类,在这个类中创建JS需要调用的Android本地的Java方法,并且要用@JavascriptInterface来进行注解!从注解的字面意思看其实就是定义了一个JS需要调用的一个接口,例如:
public class JsInteration {
@JavascriptInterface
public String back() {
return “hello world”;
}
那么在js中怎么来调用呢?
注意这里的方法名一定要是一样的!
在上面都做好之后,最关键的一步就是对这个接口进行注册,其实就是调用 mWebView.addJavascriptInterface()方法!
mWebView.addJavascriptInterface(new JsInteration(), “android”);
第一个参数就是我们建的这个类的实例对象,第二个参数就是一个类似标签的字符串,其实就是一个可以让JS识别这个实例对象的名称!
到这里JS调用Android本地方法已经介绍完了,下面就是介绍一下Android本地调用JS方法,在工作中,H5界面通过JS调用Android本地的扫二维码功能,然后Android会获取一个条信息,需要讲这条信息更新到之前的H5界面上,这时候就需要调用JS方法来更新H5界面了!
若调用的js方法没有返回值,则直接可以调用mWebView.loadUrl(“javascript:do()”);其中do是js中的方法;例如:
webView.loadUrl(“javascript:setNo(‘” + mid + “’)”);这个“javascript:”一定不能少,setNo是方法名,还可以传递参数,但是在传递参数的时候记得要加“‘”单引号,不然会报错找不到资源!这样JS那边就会这行这个方法并且拿到我们传递的参数来更新H5界面数据!
若有返回值时我们可以调用mWebView.evaluateJavascript()方法:
这个方法必须是API19以后才能使用
mWebView.evaluateJavascript(“sum(1,2)”, new ValueCallback() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG, “onReceiveValue value=” + value);
}
});
这里Android和H5简单交互就介绍完了!当然肯定还要加访问互联网的权限了,这个别忘了!