关于Android JS调用的疑问标题,如何有效使用Android JS调用功能?

Android JS调用通常指在Android应用中通过JavaScript接口与WebView进行交互。

Android与JS相互调用详解

一、通过WebView的addJavascriptInterface()进行对象映射

androidjs调用

1、原理:Android和JS通过webview.addJavascriptInterface(new JSKit(),"mjs")方法形成对象映射,JS中的mjs对象就可以调用Android中的JSKit对象中的方法。

2、具体使用步骤

在Android里设置映射:在Activity中,先获取WebView组件,启用JavaScript,然后通过addJavascriptInterface()方法将Java对象映射到JS对象,创建一个JSKit类,并在其中定义需要被JS调用的方法,同时加上@JavascriptInterface注解。

在JS中调用Android方法:在HTML文件中,通过JavaScript代码直接调用映射后的JS对象(即mjs)的方法,调用mjs.hello("js去调用了android中的hello方法");

3、优缺点

优点:使用简单,仅需将Android对象和JS对象映射即可实现相互调用。

缺点:对于Android 4.2以下版本存在安全漏洞,需要采用拦截prompt()的方式进行漏洞修复;对于Android 4.2及以上版本,则需对被JS调用的函数添加@JavascriptInterface注解。

androidjs调用

二、通过WebViewClient的shouldOverrideUrlLoading()方法回调拦截url

1、原理:Android通过WebViewClient的回调方法shouldOverrideUrlLoading()拦截URL,解析该URL的协议,如果检测到是预先约定好的协议,就调用相应方法。

2、具体使用步骤

在JS中约定URL协议:在JS代码中,通过改变window.location或document.location来约定一个特殊的URL协议,如js://webview?arg1=111&arg2=222

在Android中复写shouldOverrideUrlLoading()方法:在Activity中,复写WebViewClient的shouldOverrideUrlLoading()方法,当检测到预定的URL协议时,执行相应的操作。

3、优缺点

优点:无需对JS进行修改,只需在Android端进行配置即可实现调用。

androidjs调用

缺点:需要在Android和JS之间约定好URL协议,且每次调用都需要进行URL拦截和解析,效率相对较低。

相关问题与解答

1、:如何在Android中保持与JS对象的映射关系,避免因页面刷新或重新加载而丢失?

:可以在Android的Activity或Fragment的生命周期方法中重新添加JS对象映射,确保在页面刷新或重新加载后仍能保持映射关系,在onResume()onStart()方法中重新调用addJavascriptInterface()方法。

2、:在使用shouldOverrideUrlLoading()方法拦截URL时,如何传递复杂的数据类型或多个参数?

:可以通过将复杂数据类型转换为JSON格式字符串,并通过URL的查询参数进行传递,在Android端接收到URL后,再将JSON字符串解析回对应的数据类型或多个参数。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1623602.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2025-03-08 14:25
下一篇 2025-03-08 14:28

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入