Android与vue js互相调用

第一部分:js调用android

1.这种情况,就是点击了web页面的控件,让android原生做出反应,如跳转或者处理方法

2.android代码要做的就是在写web页面的代码内部监听js点击的方法

3.这里监听的时候部分普通js和vue js 4.不管你用的什么web第三方控件都要实现下面的方法

// setJavaScriptEnabled这句代码在用TBS腾讯浏览服务的jar包时,显示过期,但是还是有效
webview.getSettings().setJavaScriptEnabled(true);
// 这里的this,一般是指加载web页面的context,name指的是js页面调用方法前的一个对象,具体看js代码
webview.addJavascriptInterface(this,"name");
  • 来一段没有注释的代码块

WebSettings webSettings = webview.getSettings();
webSettings.setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/html.html");
webview.addJavascriptInterface(MainActivity.this,"android");
  • 来一段js代码

1.里面的test.hello("xxx"),应该可以写成window.test.hello("xxxx")

2.所以以hello命名的方法要写在android代码中,那之前在android代码中的那个name就是test

3.所以写成webview.addJavascriptInterface(this,"test");

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <title>Carson</title>  
      <script>
         function callAndroid()
         {
        	// 由于对象映射,所以调用test对象等于调用Android映射的对象
            test.hello("js调用了android中的hello方法");
         }
      </script>
   </head>
   <body>
      //点击按钮则调用callAndroid函数
      <button type="button" id="button1" onclick="callAndroid()"></button>
   </body>
</html>
  • js代码示例

  • 在来段js代码加深印象

1.下面应该写成webview.addJavascriptInterface(this,"android")

2.this是上下文,根据具体情况定

  • 上面的代码在java中监听的写法是

1.在Android4.4以上并且必须加入@JavascriptInterface才有响应。

2.第一个方法不带参数,第二方法带参数

第二部分:android调用js

1.那android怎么调用js中的方法呢

2.我分为两种,一个是调用普通的js代码,一个是调用vue js的代码

  • 看在js中定义的一个方法给android调用

  • 接着在java中调用

1.javascript这个是固定写法

2.callFromJava("xxxx")才是真正要调用的方法

android调用vue js

  • vue js 中的写法

1.里面一定要把给java调用的方法挂在到window上,就是mounted()中写的

  • java中调用代码

1.网上找了一种这个写法的,给参考下

2.我自己写的方法直接点,这里还传了一个参数

  • 自己写的是

Last updated

Was this helpful?