Android与Vue的交互的方法示例
做过Android混合开发的,应该都知道Android中Java代码和Javascript代码之间的交互怎么做。
首先回顾一下Java和Javascript之间的交互。
JavaScript调用Java
Android中WebView添加供Html页面调用的Java方法:
mWebView.addJavascriptInterface(newDirectToJS(),"AndroidObj"); classDirectToJS{ @JavascriptInterface publicvoidshowToast(){ Toast.makeText(this,"AndroidToast",Toast.LENGTH_SHORT).show(); } }
Html页面中JavaScript调用Java方法的方式如下:
window.AndroidObj.showToast();
JavaScript代码中:window是网页的Window实体,这个做前端开发的人都非常熟悉;AndroidObj是Android端给WebView提供的一个实体,Android会将这个实体赋给WebView的window;showToast()就是Java提供给Html的方法。
Java调用JavaScript
首先Html上写个普通的JavaScript方法:
functionshowAlert(){ alert("HtmlAlert"); }
Android中只要执行以下代码即可:
mWebView.loadUrl("javascript:showAlert()");
Vue框架上的坑
如果前端用的是Vue框架,那么如果你在js脚本上直接写一个方法,Android是调用不到的,无论是写在那个位置。
这是因为Vue框架中,脚本上的方法不是属于window的方法,你应该将要提供给Android调用的方法赋给window,这样,Android中才能调得到:
window['showAlert']={ alert("HtmlAlert"); }
总得来说,对于普通的网页,写在js脚本上的方法,默认都是属于window实体的;而Vue框架中,由于框架内部的实现机制比较特殊,你写在js脚本上的方法,不是真正页面上的方法,所以在Android中是调用不到的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。