js调原生Android方法
首先允许webView可执行Js
//允许Js交互与弹窗
webSettings.setJavaScriptEnabled(true);
然后实现一个管理类(JS桥),其中的所实现的方法就是Js可以调用的方法。
public class SDK{
@JavascriptInterface
public void hello(String msg){
Toast.makeText(TestActivity.this, msg, Toast.LENGTH_SHORT).show();
}
}
如上述hello方法,通过@JavascriptInterface注解来建立一个原生对象和Js对象的绑定,因此可以通过Js直接访问。
hello方法被调用,会传回一个msg参数供给Android客户端使用。
通过addJavascriptInterface方法传入 管理类对象和一个标识符(下面会提到)
webView.addJavascriptInterface(new SDK(),"sdk");
而对于Html文件,内容如下。
<html>
<script language="javascript">
function tz() {
window.location.href='https://www.baidu.com';
sdk.hello("toast from js");
}
</script>
<body>
<button onclick="tz()">Tobaidu</button>
</body>
</html>
点击按钮触发js的tz()事件,而js的tz()事件所执行的功能是跳转到百度,并且调用sdk.hello()方法传入的一个参数。
而这里的sdk就是上面所提到的标识符,后面的hello方法就是new SDK()这个对象所提供的的hello方法,Js执行了调用,Android客户端就会收到一个msg参数,从而弹出一个Toast。
由此可以实现Js调用Android的功能。
网友评论