您的位置:首页 > 移动开发 > Android开发

Android和H5(JS)简单交互

2016-12-08 17:33 459 查看
接着上一篇《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中怎么来调用呢?

function s(){
//调用Java的back()方法
**var result =window.android.back();**
document.getElementById("p").innerHTML=result;
}

注意这里的方法名一定要是一样的!

在上面都做好之后,最关键的一步就是对这个接口进行注册,其实就是调用 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简单交互就介绍完了!当然肯定还要加访问互联网的权限了,这个别忘了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android webview javascript