JavaScript与Android交互(Kotlin)

   日期:2023-08-05     来源:网络整理    作者:佚名     移动:http://mip.ourb2b.com/news/660070.html
核心提示:JavaScript与Android交互(Kotlin)小伙伴们在使用安卓原生webview时经常能碰到js调用安卓手机相机、相册或录音等功能,前端小姐姐写好了代码功能,在IOS手机测试没有问题,一到安卓手机里功能怎么就失效了呢,安卓程序员肯定以为自己代码哪里配置的有问题,一顿调试,最后发现还是不行,于是乎各种百度谷歌,最后发现原来是webview自己的问题(顺便吐槽下,为什么webview这个常用的控件,谷歌公司就不能优化下呢,坑太多了!

Javascript与Android交互(Kotlin)

小伙伴们在使用安卓原生webview时经常能碰到js调用安卓手机相机、相册或录音等功能,前端小姐姐写好了代码功能,在IOS手机测试没有问题,一到安卓手机里功能怎么就失效了呢,安卓程序员肯定以为自己代码哪里配置的有问题,一顿调试,最后发现还是不行,于是乎各种百度谷歌,最后发现原来是webview自己的问题(顺便吐槽下1688黄页,为什么webview这个常用的控件,谷歌公司就不能优化下呢,坑太多了!),好了废话不多说,进入正文。

先来说说什么是JS交互:

说的通俗一点就是前端一些调用不了原生代码的功能,或者在一些复杂页面和混排页面上,原生没有网页来得快,所以在实际项目中,很多情况下都是原生页面掺杂着webView 加载js的网页的,这就涉及到两者之间的交互以及传值问题。

Android调用JS方法:

JS调用Android方法:

Android调用Js方法

1、把需要测试的js代码放到src/main/asserts文件夹下,测试代码如下

js测试代码

2、配置wevView属性启用google webview,并写一个测试按钮进行点击监听

webview配置及按钮点击监听

由于是测试,我把js代码文件放到了asserts进行加载测试,实际项目中是加载的链接,道理都一样,按钮点击监听结果:

Android调用js方法结果

3、Android调用js方法时传值给js。有时候在Android调用js方法时需要传递参数给js,我们只要在安卓端调用js方法内将参数拼进去即可,int类型可直接拼进去1688库移动站,string类型转成json后传给js,如图:

拼接参数

结果显示为:

Android调用js方法时传值给js结果

Android调用js方法时需要注意事项:

页面加载完成才去调用js方法

Android调用js两种方法对比:

Android调用js两种方法对比

JS调用Android方法

一、通过WebView的ce()

1、js调用Android方法时需要一个交互桥梁,交互桥梁的名字前端和Android起的名字必须一样。

交互桥梁

2、js代码测试代码为:

js测试代码

3、点击网页内按钮监听事件,可以看出js成功调用了安卓的toast方法:

ce()调用安卓方法成功

4、优点:使用简单 缺点:存在严重漏洞

二、通过的ding()回调拦截url

1、约定url协议

js约定协议

2、Android端重写类的ding()方法Javascript与Android交互(Kotlin),注释很清楚,直接看注释

复写ding()方法

3、点击网页内按钮,js成功调用了安卓的toast方法,参数传递也没有问题:

ding()回调拦截url成功

4、优点:不存在方法1中的漏洞 缺点:获取返回值方法复杂启用google webview,需要约束协议

三、通过 的()、()、()方法回调拦截JS对话框alert()、confirm()、prompt()方法

常用的拦截是 JS的输入框(即prompt()方法),因为只有prompt()可以返回任意类型的值,操作最全面方便、更加灵活

1、约定url协议

拦截prompt()约定协议

2、Android端复写类中对应弹框方法进行拦截并解析

复写类中对应弹框方法进行拦截

3、可以看出来拦截方法跟ding()一样,这里就不上图展示结果了

4、优点:不存在漏洞 缺点:获取返回值方法复杂,需要约束协议

Android和JS复杂交互

举个栗子:JS在点击页面上一个按钮时需要选取安卓手机相册照片功能,选择后需要安卓程序员把图片上传到后台服务器,获取到网络链接后再把图片链接通过loadUrl()或者()方法传递给H5端,来实现一个复杂交互过程。

说是复杂交互,其实还是简单交互的混合使用,只要理解了简单交互的步骤和值传递,再复杂的交互相信大家也不在话下。

【本文来源于互联网转载,如侵犯您的权益或不适传播,请邮件通知我们删除】

免责声明:JavaScript与Android交互(Kotlin)来源于互联网,如有侵权请通知我们删除!
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请通过网站留言/举报反馈,本站将立刻删除!
 
标签: 启用google webview
 
更多>同类行业

推荐图文
最新发布
网站首页  |  网站地图  |  网站留言  |  RSS订阅  |  违规举报