Android通过webview与H5交互(互调)

前话

笔者是写H5小页面的,所以这篇文章主要是针对前端与安卓交互时遇到的一些问题做简单总结和合理猜测,针对安卓的话,有一个图是总结所有交互的方式的,可以看一下,当个参考,当时总结的时候是参考一篇写得比较详细的文章做得,但是现在找不到了,如果作者看到可以与我联系,我定更改附上链接,谢谢。

安卓通过webview与JS进行交互

在这里插入图片描述

安卓调用JS注意点

● 提供给安卓使用的js方法,需要提高到window对象中

使用vue框架的小伙伴可能会注意到自己写的方法,在安卓中运行时,会报错:找不到该方法。简单地解释可以说是因为Vue是一个大的对象,所以你写的方法的this指向不是window对象,这种时候想办法把方法提到window对象中就可以了


	/* common/app.js */
	var hybrid = {}
	window.Hybrid = hybrid
	if (window.Vue) {  // 自动绑定
	  window.Vue.use(hybrid)
	}
	export { hybrid }
	

    import {hybrid} from '../common/app.js'

	mounted(){
		hybrid.set = this.set
	}

因为上面前端都把方法封装在变量window.Hybrid中,所以安卓调用JS方法时方法名要加一个window.Hybrid前缀

● 安卓调用JS过程中传参时,注意是传字符串

如果有需要传递json格式的情况的话,先转成json字符串格式,H5获取之后再转成json格式。

传递多个参数时要确保接受参数和传递参数的个数的一致性,不然会报错,或者直接不报错,但是参数拿不到的情况。

● 待H5页面加载结束,再调用JS方法

有些需求是页面一旦渲染完成,安卓就要调用页面的JS方法,如果出现有时候能调到有时候不能调到,安卓就要检查是否是在页面加载之后再去获取方法执行

JS调用安卓注意点

● 关键字不要出错

js和安卓统一一个关键字,js调用安卓方法的时候就是通过关键字调用的

	H5.loadReady() //H5就是关键字

交互失败可能原因

● 安卓需要开相应的webview权限给前端,比如localstorage的运用、H5自发的网络请求等
● 利用chrome浏览器调试(地址 - - chrome://inspect/#devices)能看到大多数问题,不过缺点就是要翻墙
● 安卓传参数给前端失败时要检查下传参格式,字符串传参要如下:

	mWebviewPk.loadUrl("javascript:window.Hybrid.【方法名】(" + "\'" + 【json字符串参数】 + "\')");
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值