安卓Webview 与 vue h5 使用js交互

JavaScript041

安卓Webview 与 vue h5 使用js交互,第1张

总的来说都是使用安卓webview.loadUrl(url)加载页面

url为在线网页连接

将打包好的网页资源放入安卓静态目录

加载目录为

Android 调用 JS 有两种方式,都是通过 WebView 的方法:

webview.loadUrl()

webview.evaluateJavascript()

js方法

vue需要把方法挂载到windows

通过映射js object暴露给js操作

安卓

h5调用

经常需要适配安卓和ios

加入以下机型判断

Android与H5交互——JSBridge - (jianshu.com)

1、Android 调用js

mAgentWeb.getJsAccessEntrace().quickCallJs(" ")

quickCallJs("方法名",参数...);

方法名不带 ()

例:

js方法   getJs()

mAgentWeb.getJsAccessEntrace().quickCallJs("getJs ")

js方法   getJs(var a,var b)

mAgentWeb.getJsAccessEntrace().quickCallJs("getJs ",a,b) 

2、js调用Android

mAgentWeb.getJsInterfaceHolder().addJavaObject("android",new Class())

js调用 window.android.方法名(参数)

Android中提供的方法 需要添加注解  @JavascriptInterface

具体原因是这样的:

1、Java调用js里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法。

2、Java调用js的函数、没有返回值、调用了就控制不到了。

3、Js调用Java的方法、返回值如果是字符串、你会发现这个字符串是native的、转成locale的才能正常使用、使用toLocaleString()函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间。

4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验。