Android 关于h5与java交互所遇到的问题

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}’)” ,引号的问题会让人头大

下面发几个扩展方法

//调用h5的方法
fun X5WebView.takeH5Func(funcName: String) {
   
    if (funcName.isNullOrEmpty()) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值