h5调用java方法,并向java传参。
- 目前发现是传递不了对象的,如果需要传递对象,要转成json传递
- 最好传递的参数全是string类型,布尔值用0,1 代替
发现h5无法触发java方法的自查
- 看有没有加入注解 @JavascriptInterface
- 遇到一种情况,就是在h5调用java方法里,做了逻辑处理,并调用h5的方法。这时候无法触发。用rxjava切换主线程
@JavascriptInterface
fun goToMyTsDevice() {
Flowable.just("").observeOn(AndroidSchedulers.mainThread()).subscribe {
if (bleService.isTsHasConnected()) {
bleService.writeData(TsBleUtils.writeTsInfo())
} else {
val bean = TsDeviceH5Bean("--", "--", "--")
mWebView.takeH5FuncWithObj(TsConstans.H5_TS_INFO, bean)
}
}
}
h5调用java方法时,java方法是不能有返回值的。好像是个异步的过程,h5根本收不到return的值。只能调用h5方法传值。最好也有包裹一层线程的切换
java调用h5如果需要传递多个参数,最好的办法是传递一个json,不然的话,调用 val h5Fuc = “javascript:{funcName(’{param}’)” ,引号的问题会让人头大
下面发几个扩展方法
fun X5WebView.takeH5Func(funcName: String) {
if (funcName.isNullOrEmpty())