Android和js交互
Android调用js方法,两种
方法一:loadUrl()
通过WebView的loadUrl(),不需要从js获取返回值,
优点:兼容4.4以前版本
缺点:会使页面刷新,效率低
/**
* 无参无返回值的调用H5
*/
private fun login1Click(v: View) {
webView.loadUrl("javascript:show1()")
}
/**
* 有参无返回值的调用H5
*/
private fun login3Click(v: View) {
val a = "我是Android给H5的参数"
webView.loadUrl("javascript:showMsg('$a')")
}
方法二:evaluateJavascript()
通过WebView的evaluateJavascript(),能从js获取返回值的方式
优点:不会使页面刷新,此种方式效率高,此方法完全可替代loadUrl,ValueCallback传null即可;
缺点:但是4.4以后才支持
/**
* 无参有返回值的调用H5
*/
@RequiresApi(Build.VERSION_CODES.KITKAT)
private fun login2Click(v: View) {
webView.evaluateJavascript("javascript:show()") {
Toast.makeText(
this,
it,
Toast.LENGTH_LONG
).show()
}
}
/**
* 有参有返回值的调用H5,安卓4.4以上才能用这个方法
*/
@RequiresApi(Build.VERSION_CODES.KITKAT)
private fun login4Click(v: View) {
val a = 1
val b = 3
webView.evaluate