美文网首页
2019-05-15 js调原生Android方法

2019-05-15 js调原生Android方法

作者: 做梦枯岛醒 | 来源:发表于2019-05-19 11:16 被阅读0次

参考文章:https://juejin.im/post/5a806fba6fb9a06348535c9f

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的功能。

相关文章

网友评论

      本文标题:2019-05-15 js调原生Android方法

      本文链接:https://www.haomeiwen.com/subject/iyumaqtx.html