CN110275730A - 一种基于安卓平台JavaScript定制服务化的方法及装置 - Google Patents
一种基于安卓平台JavaScript定制服务化的方法及装置 Download PDFInfo
- Publication number
- CN110275730A CN110275730A CN201910452883.2A CN201910452883A CN110275730A CN 110275730 A CN110275730 A CN 110275730A CN 201910452883 A CN201910452883 A CN 201910452883A CN 110275730 A CN110275730 A CN 110275730A
- Authority
- CN
- China
- Prior art keywords
- service
- customization
- javascript
- webview
- adjusted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于安卓平台JavaScript定制服务化的方法及装置,属于安卓开发技术领域。本发明提供了一种基于安卓平台JavaScript定制服务化的方法及装置,灵活应用JavaScript和Webviwe中的各种相关方法,以及模块化单元的装置,实现通过服务化技术,让JavaScript获得更多的原生平台功能;实现定制服务化,让服务实现简单,自定义高,可重复利用。
Description
技术领域
本发明涉及安卓Webview和JavaScript交互技术领域,尤其涉及一种基于安卓平台JavaScript定制服务化的方法及装置。
背景技术
安卓Webview和JavaScript交互,是指在安卓开发用Webview展示手机网页,涉及到的原生开发语言和网页JavaScript的交互。能很好打通网页和app的通信,让网页开发能获得更多原生的服务。比如淘宝,微信等。主要用到的技术有JSBridge。然而,Webview和JavaScript交互在安卓开发中没有实现服务化,使得开发复杂,代码冗余。如何实现通过服务化技术,让JavaScript获得更多的原生平台功能;如何实现定制服务化,让服务实现简单,自定义高,可重复利用。急需一种基于安卓平台JavaScript定制服务化的方法及装置,从而克服现有技术的不足。
发明内容
本发明的目的是,提供了一种基于安卓平台JavaScript定制服务化的方法及装置,让网页开发能获得更多原生的服务,克服了现有技术的不足,实现了定制服务化,使得开发不复杂,代码不冗余。
本发明的技术方案如下:
一种基于安卓平台JavaScript定制服务化的方法,其特征在于,包含以下步骤:
1)编写定制服务,所述的定制服务,通过Java接口的抽象方法定义服务模板,自定义服务类继承该接口,重写该接口的方法,实现自定义服务方法,继承重写自定义Webview,在自定义Webview初始化时,定义一个Map集合类成员变量储存自定义服务类对象和服务名称,通过上述过程到往自定义Webview注册的自定义服务类集合;
2)编写自定义协议,所述的自定义协议由JavaScript把传递服务名和参数组装而成;
3)发起服务请求自定义协议给安卓Webview;
4)判断是否为步骤2)所述的自定义协议,所述的判断由安卓Webview通过WebviewClient监听里面的回调方法shouldOverrideUrlLoading判断;
5)若是,则传递自定义协议给协议解析转发器进行解析;若否,则交给Webview默认处理方式,结束操作;
6)反射调起自定义协议对应的定制服务;
7)判断是否调起定制服务成功;
8)若调起定制服务成功,则定制服务处理内部的服务,所述的内部服务是编辑代码处理并封装成的服务(如:定位、获取***信息);协议解析转发器回调处理成功参数结果;若调起定制服务不成功,则协议解析转发器回调处理失败参数结果;
9)参数的结果传递给JavaScript,所述的参数的结果通过webview方法loadUrl(jsCallback)注入js回调给JavaScript;
10)完成步骤9)后结束操作。
进一步的,所述的步骤4)中的协议解析转发器是通过Uri解析获取服务名、回调方法id、传递参数;
进一步的,所述的步骤6)反射调起自定义协议对应的定制服务的实现方法是:协议解析转发器解析完成后,通过获取服务名在步骤1)中Map集合类储存的注册服务的服务类对象,调起定制的服务方法;如果Map集合类储存的注册服务没有找到所述的服务类对象,则通过Java反射获取固定包名下的服务类对象,调起对应的定制服务方法。进一步的,所述的步骤8)和步骤9),获取参数的实现方法是:在安卓Java类处理JavaScript调起的服务,把处理的结果通过Webview的loadUrl(jsCallback)方法传递给JavaScript,调起JavaScript的回调方法。
一种基于安卓平台JavaScript定制服务化的装置,其特征在于,包含:
传参协议单元,用于JavaScript将自定义协议传参给Webview;第一判断单元,用于判断是否为规定的自定义协议;
解析单元,用于解析自定义协议,获取传递参数;
反射调起单元,用于反射调起自定义协议对应的定制服务;
第二判断单元,用于判断是否调起定制服务成功;
回调单元,用于Webview通过协议解析转发器给JavaScript传参回调处理参数结果,具体实现是通过webview方法loadUrl(jsCallback)注入js回调给JavaScript;
结束单元,用于结束操作。
本发明的有益效果是:通过服务化技术,让JavaScript获得更多的原生平台功能,丰富了客户端定制功能;定制服务化,让服务实现简单,自定义高,可重复利用。
附图说明
图1为本发明一种基于安卓平台JavaScript定制服务化的方法及装置的整体框架结构图
图2为本发明一种基于安卓平台JavaScript定制服务化的方法及装置的流程图
图3为本发明一种基于安卓平台JavaScript定制服务化的方法及装置的装置连接图
具体实施方式
下面结合附图对本发明做进一步描述:
实施实例一:
JavaScript定制服务化,实现把JavaScript扩展更多的原生平台功能,把自定义的平台功能弄成一个个的服务,实现服务化,从而实现复用性。比如安卓客户端Webview显示的网页操作过程中,需要定制好看流畅,满足用户体验的的自定义弹窗,就可以只需编写对应的自定义弹窗作为服务,JavaScript根据需要在任何场景调用,提高用户体验,服务实现简单,可以重复利用。具体实现步骤如下:
1)编写包含自定义弹窗的定制服务,所述的定制服务,通过Java接口的抽象方法定义服务模板,自定义服务类继承该接口,重写该接口的方法,实现自定义服务方法,继承重写自定义Webview,在自定义Webview初始化时,定义一个Map集合类成员变量储存自定义服务类对象和服务名称,通过上述过程到往自定义Webview注册的自定义服务类集合;
2)JavaScript根据在任何场景调用所述的步骤1)的自定义弹窗的需要编写自定义协议;
3)发起服务请求自定义协议给安卓Webview;
4)判断由安卓Webview通过WebviewClient监听里面的回调方法shouldOverrideUrlLoading判断是否为步骤2)里的自定义协议;
5)若是,则传递自定义协议给协议解析转发器进行解析;若否,则交给Webview默认处理方式,结束操作;
6)反射调起自定义协议对应的自定义弹窗的定制服务;
7)判断是否调起自定义弹窗的定制服务成功;
8)若调起自定义弹窗的定制服务成功,则由定制服务处理内部的服务,协议解析转发器回调处理成功参数结果,从而流畅的在Webview显示的网页操作中实现JavaScript根据需要在任何场景调用自定义弹窗服务;若调起定自定义弹窗制服务不成功,则协议解析转发器回调处理失败参数结果;
9)参数的结果传递给JavaScript,所述的参数的结果通过webview方法loadUrl(jsCallback)注入js回调给JavaScript;
10)完成步骤9)后结束操作,直至下次操作判断自定义协议有对应的定制自定义弹窗服务。
实施实例二:
安卓客户端网页通过JavaScript获取定位不准确,可以简单把安卓的定位功能作为服务,提供给JavaScript在任何需要的场景调用,定位更精准,服务实现简单,可以重复利用。具体实现步骤如下:
1)编写包含调用安卓定位功能的定制服务,所述的定制服务,通过Java接口的抽象方法定义服务模板,自定义服务类继承该接口,重写该接口的方法,实现自定义服务方法,继承重写自定义Webview,在自定义Webview初始化时,定义一个Map集合类成员变量储存自定义服务类对象和服务名称,通过上述过程到往自定义Webview注册的自定义服务类集合;
2)JavaScript根据在任何场景调用所述的步骤1)的调用安卓定位功能的需要编写自定义协议;
3)发起服务请求自定义协议给安卓Webview;
4)判断由安卓Webview通过WebviewClient监听里面的回调方法shouldOverrideUrlLoading判断是否为步骤2)里的自定义协议;
5)若是,则传递自定义协议给协议解析转发器进行解析;若否,则交给Webview默认处理方式,结束操作;
6)反射调起自定义协议对应的调用安卓定位功能的定制服务;
7)判断是否调起调用安卓定位功能的定制服务成功;
8)若调起调用安卓定位功能的定制服务成功,则由定制服务处理内部的服务,协议解析转发器回调处理成功参数结果,从而实现JavaScript在任何需要的场景调用安卓定位功能,定位更精准,服务实现简单,可以重复利用;若调起定自定义弹窗制服务不成功,则协议解析转发器回调处理失败参数结果;
9)参数的结果传递给JavaScript,所述的参数的结果通过webview方法loadUrl(jsCallback)注入js回调给JavaScript;
10)完成步骤9)后结束操作,直至下次操作判断自定义协议有对应的定制调用安卓定位功能的服务。
实施实例三:
一种基于安卓平台JavaScript定制服务化的装置,其特征在于,包含:传参协议单元、第一判断单元、解析单元、反射调起单元、第二判断单元、回调单元、结束单元;
传参协议单元,用于JavaScript将自定义协议传参给Webview,具体为,发起服务请求自定义协议给安卓Webview;
第一判断单元,用于判断是否为规定的自定义协议,所述的判断由安卓Webview通过WebviewClient监听里面的回调方法shouldOverrideUrlLoading判断;
解析单元,用于解析自定义协议,获取传递参数;
反射调起单元,用于反射调起自定义协议对应的定制服务,其实现方法是:协议解析转发器解析完成后,通过获取服务名在Map集合类储存的注册服务的服务类对象,调起定制服务方法HybridService,如Map集合类储存的注册服务没有对应方法,可以通过Java反射获取固定包名下的服务类对象,调起对应的定制服务方法;
第二判断单元,用于判断是否调起定制服务成功;
回调单元,用于Webview通过协议解析转发器给JavaScript传参回调处理参数结果,其实现方法是:获取参数的实现方法是:在安卓Java类处理JavaScript调起的服务,把处理的结果通过Webview的loadUrl(jsCallback)方法传递给JavaScript,调起JavaScript的回调方法;
结束单元,用于结束操作。
Claims (5)
1.一种基于安卓平台JavaScript定制服务化的方法,其特征在于,包含以下步骤:
1)编写定制服务,所述的定制服务,通过Java接口的抽象方法定义服务模板,自定义服务类继承该接口,重写该接口的方法,实现自定义服务方法。重写自定义Webview:在自定义Webview初始化时,定义一个Map集合类成员变量储存自定义服务类对象和服务名称,通过上述重写自定义Webview过程实现通过自定义Webview注册自定义服务类集合;
2)编写自定义协议,所述的自定义协议由JavaScript把传递服务名和参数组装而成;
3)发起服务请求自定义协议给安卓Webview;
4)判断是否为步骤2)所述的自定义协议,所述的判断由安卓Webview通过WebviewClient监听里面的回调方法shouldOverrideUrlLoading判断;
5)若是,则传递自定义协议给协议解析转发器进行解析;若否,则交给Webview默认处理方式,结束操作;
6)反射调起自定义协议对应的定制服务;
7)判断是否调起定制服务成功;
8)若调起定制服务成功,则定制服务处理内部的服务,协议解析转发器回调处理成功参数结果;若调起定制服务不成功,则协议解析转发器回调处理失败参数结果;
9)参数的结果传递给JavaScript,所述的参数的结果通过webview方法loadUrl(jsCallback)注入js回调给JavaScript;
10)完成步骤9)后结束操作。
2.如权利要求1所述的一种基于安卓平台JavaScript定制服务化的方法,其特征在于,所述的步骤4)中的协议解析转发器是通过Uri解析获取服务名、回调方法id、传递参数。
3.如权利要求1所述的一种基于安卓平台JavaScript定制服务化的方法,其特征在于,所述的步骤6)反射调起自定义协议对应的定制服务的实现方法是:协议解析转发器解析完成后,通过获取服务名在步骤1)中Map集合类储存的注册服务的服务类对象,调起定制的服务方法;如果Map集合类储存的注册服务没有找到所述的服务类对象,则通过Java反射获取固定包名下的服务类对象,调起对应的定制服务方法。
4.如权利要求1所述的一种基于安卓平台JavaScript定制服务化的方法,其特征在于,所述的步骤8)和步骤9),获取参数的实现方法是:在安卓Java类处理JavaScript调起的服务,把处理的结果通过Webview的loadUrl(jsCallback)方法传递给JavaScript,调起JavaScript的回调方法。
5.一种基于安卓平台JavaScript定制服务化的装置,其特征在于,包含:
传参协议单元,用于JavaScript将自定义协议传参给Webview;)发起服务请求自定义协议给安卓Webview;
第一判断单元,用于判断是否为规定的自定义协议;
解析单元,用于解析自定义协议,获取传递参数;协议解析转发器
反射调起单元,用于反射调起自定义协议对应的定制服务;
第二判断单元,用于判断是否调起定制服务成功;
回调单元,用于Webview通过协议解析转发器给JavaScript传参回调处理参数结果,具体实现是通过webview方法loadUrl(jsCallback)注入js回调给JavaScript;
结束单元,用于结束操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910452883.2A CN110275730A (zh) | 2019-05-28 | 2019-05-28 | 一种基于安卓平台JavaScript定制服务化的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910452883.2A CN110275730A (zh) | 2019-05-28 | 2019-05-28 | 一种基于安卓平台JavaScript定制服务化的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110275730A true CN110275730A (zh) | 2019-09-24 |
Family
ID=67959151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910452883.2A Pending CN110275730A (zh) | 2019-05-28 | 2019-05-28 | 一种基于安卓平台JavaScript定制服务化的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110275730A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791752A (zh) * | 2021-09-16 | 2021-12-14 | 深圳市芯中芯科技有限公司 | 在安卓***中通过js同步控制网页音乐播放状态的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207873A (zh) * | 2011-06-15 | 2011-10-05 | 中国联合网络通信集团有限公司 | 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构 |
CN105117222A (zh) * | 2015-08-19 | 2015-12-02 | 北京奇虎科技有限公司 | 一种提供安卓包apk定制服务的方法和装置 |
CN109189469A (zh) * | 2018-06-22 | 2019-01-11 | 北京大学 | 基于反射的安卓应用微服务化方法及*** |
-
2019
- 2019-05-28 CN CN201910452883.2A patent/CN110275730A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102207873A (zh) * | 2011-06-15 | 2011-10-05 | 中国联合网络通信集团有限公司 | 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构 |
CN105117222A (zh) * | 2015-08-19 | 2015-12-02 | 北京奇虎科技有限公司 | 一种提供安卓包apk定制服务的方法和装置 |
CN109189469A (zh) * | 2018-06-22 | 2019-01-11 | 北京大学 | 基于反射的安卓应用微服务化方法及*** |
Non-Patent Citations (2)
Title |
---|
HAPPYCODE002: "android webview与js简单的交互方案", 《博客园:HTTPS://WWW.CNBLOGS.COM/HAPPYXIAOYU02/P/9084387.HTML》 * |
JENSEN95: "Android中Java和JS的交互", 《HTTPS://SEGMENTFAULT.COM/A/1190000011487440》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791752A (zh) * | 2021-09-16 | 2021-12-14 | 深圳市芯中芯科技有限公司 | 在安卓***中通过js同步控制网页音乐播放状态的方法 |
CN113791752B (zh) * | 2021-09-16 | 2024-06-11 | 深圳市芯中芯科技有限公司 | 在安卓***中通过js同步控制网页音乐播放状态的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377438B (zh) | 跨进程通信接口的路由方法、装置和*** | |
US20160073216A1 (en) | System and method for providing a communication endpoint information service | |
CN106873961B (zh) | 通过移动浏览器唤醒app应用的方法及装置 | |
CA3152829A1 (en) | Method and apparatus for processing business data | |
CN109582395B (zh) | 小程序运行方法、装置、电子设备及存储介质 | |
CN114553978B (zh) | 一种传感器报文数据处理方法、电子设备及存储介质 | |
CN104935744A (zh) | 一种验证码显示方法、验证码显示装置及移动终端 | |
CN110580154A (zh) | 基于h5接入方式的接入方法及其接入组件和移动终端 | |
CN111338604A (zh) | 服务生成方法、装置、设备及计算机可读存储介质 | |
CN106897153B (zh) | 调用应用编程接口的方法和*** | |
CN110058864A (zh) | 微服务的部署方法及装置 | |
US20110320286A1 (en) | System And Method For Integrating An Ad Banner With A Calling Application | |
CN110390043A (zh) | 网页邮箱数据的爬取方法、装置、终端和存储介质 | |
CN114416075A (zh) | 业务处理方法及装置 | |
CN105718512A (zh) | 一种在Ios***中利用JS语言调用原生语言的方法 | |
CN105704177A (zh) | 一种ua识别方法、装置 | |
CN111159019A (zh) | 一种应用程序的测试方法、测试控制终端以及测试终端 | |
CN110275730A (zh) | 一种基于安卓平台JavaScript定制服务化的方法及装置 | |
Schieferdecker et al. | IoT-testware-an eclipse project | |
CN106681734A (zh) | 功能接口调用响应方法、装置 | |
CN103812946B (zh) | 一种ar应用程序在线云更新的方法和*** | |
JP4800310B2 (ja) | リンクを伴うクライアントプロビジョニング | |
CN105389176A (zh) | 基于应用的皮肤处理方法及装置 | |
CN105068820B (zh) | 一种基于SSH框架集成Axis开发并发布Web Service的方法 | |
CN108989365A (zh) | 一种信息处理方法、服务器、终端设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190924 |
|
WD01 | Invention patent application deemed withdrawn after publication |