CN102799477A - 资源访问方法及装置 - Google Patents
资源访问方法及装置 Download PDFInfo
- Publication number
- CN102799477A CN102799477A CN2012102457328A CN201210245732A CN102799477A CN 102799477 A CN102799477 A CN 102799477A CN 2012102457328 A CN2012102457328 A CN 2012102457328A CN 201210245732 A CN201210245732 A CN 201210245732A CN 102799477 A CN102799477 A CN 102799477A
- Authority
- CN
- China
- Prior art keywords
- java
- request
- called
- statement
- javascript
- 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
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种资源访问方法及装置,该资源访问方法包括:JS侧调用Java侧;所述Java侧调用底层系统资源接口。上述资源访问方法及装置,对上层开发人员可见的只有Javascript接口,这样基于本发明的框架采用前端web开发技术,就能开发出能在Android平台运行的程序,使得基于Android平台开发移动互联应用的门槛大大降低,从而可以更好地丰富终端的功能。
Description
技术领域
本发明主要涉及移动终端上基于插件的web应用程序开发技术,尤其涉及一种资源访问方法及装置。
背景技术
随着移动互联时代的到来,无线上网速度大规模提升,智能终端越来越被消费者青睐,如目前的苹果手机操作系统(IOS)、安卓(Android)、WindowsPhone几大智能生态系统。
随着终端性能及上网速度的提升,基于浏览器的网页(web)应用在与本地应用的比较中,凸显出明显的优势,超文本标记语言(HTML)5+层叠样式表(CSS)+Javascript(JS)的模型视图和控制(MVC)开发模式越来越被接受。HTML5沿袭以往web技术的同时,增加了很多方便的标签,如对表单、音频视频的支持,使得音频视频等应用成为互联网应用的下一个热点;Javascript解释性语言几乎能实现终端上想要的一切功能,且开发简单;CSS将样式处理与其他分开,能实现web应用的风格多样性,可定制性,显现众多优势。
Web应用程序的用户界面(UI)绘制依附于系统浏览器的web视图(webview),包括文档对象模型(DOM)解析及Javascript语句的执行。然而Web应用程序不仅仅需要与网络服务器的交互,也需要具备多种多样的功能,如调用终端的照相机拍摄照片,调用全球定位系统(GPS)模块获取实时地理位置信息等,这就涉及到与本地资源的交互访问和应用对需访问资源的配置管理。
发明内容
本发明实施例提供了一种资源访问方法及装置,以解决如何采用HTML5+CSS+Javascript访问本地资源的问题。
本发明实施例提供了一种资源访问方法,该方法包括:
JS侧调用Java侧;
所述Java侧调用底层系统资源接口。
优选地,所述JS侧调用Java侧之前,所述方法还包括:
添加预配置的JS文件与Java文件的对应关系。
优选地,所述JS侧调用Java侧包括:
所述JS侧采用默认的或重构的显示提示对话框方法向所述Java侧发送请求,该请求包括轮询请求。
优选地,所述JS侧调用Java侧之后,所述方法还包括:
所述Java侧调用所述JS侧。
优选地,所述Java侧调用所述JS侧包括:
所述Java侧建立一个发送队列,将需要运行的JS语句放入该发送队列中;
所述Java侧接收所述JS侧定时发送的轮询请求,从该发送队列获取当前JS语句,将当前JS语句作为返回值返回给所述JS侧。
本发明实施例还提供了一种资源访问装置,该装置包括:
第一调用模块,用于JS侧调用Java侧;
第二调用模块,用于Java侧调用所述JS侧。
优选地,所述装置还包括:
插件管理模块,用于加载配置文件,该配置文件中包含JS文件与Java文件的对应关系;
加载模块,用于加载所述插件管理模块,以便所述第一调用模块或所述第二调用模块执行调用操作。
优选地,所述第一调用模块,具体用于:
所述JS侧采用默认的或重构的显示提示对话框方法向所述Java侧发送请求,该请求包括轮询请求。
优选地,所述第二调用模块,具体用于:
所述Java侧建立一个发送队列,将需要运行的JS语句放入该发送队列中;
所述Java侧接收所述JS侧定时发送的轮询请求,从该发送队列获取当前JS语句,将当前JS语句作为返回值返回给所述JS侧。
优选地,所述第一调用模块,具体用于:
所述JS侧检测重构的显示提示对话框方法中的参数符合预定格式时,向所述Java侧发送所述请求。
上述资源访问方法及装置,对上层开发人员可见的只有Javascript接口,这样基于本发明的框架采用前端web开发技术,就能开发出能在Android平台运行的程序,使得基于Android平台开发移动互联应用的门槛大大降低,从而可以更好地丰富终端的功能。
附图说明
图1是本发明资源访问方法实施例的流程图;
图2是本发明资源访问方法的框架调用层次示意图;
图3是本发明的插件管理模块的结构示意图;
图4是本发明资源访问装置实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
使用HTML5+CSS+Javascript的MVC开发模式开发web应用,使之运行在Android系统的浏览器内核webkit上。其中,为了丰富应用功能与用户体验,需要访问终端设备的本地资源,如传感器、照相机等。由于Android对外提供的API是Java接口,这就涉及到Javascript跨语言访问Java的实现。同时,为实现对资源的访问权限控制,具体应用需采用插件管理的方式按需配置本地资源。
本发明实施例提供了一种资源访问方法,如图1所示,该方法包括:
步骤101、Javascript侧调用Java侧;
步骤102、Java侧调用底层系统资源接口。
上述资源访问方法的框架调用层次如图2所示,其中,Javascript调用Java实现过程如下:
Javascript调用Java需要实现Javascript和Java侧的消息传递,为了实现消息传递,利用了Javascript中的显示提示对话框prompt()方法。
Javascript中的prompt()方法用于收集用户关于特定问题的反馈信息,该方法产生一个带有短字符串消息的问题和“确定”、“取消”按钮的模式对话框,提示用户输入上述问题的答案并选择单击其中一个按钮表示确定还是取消该提示框。如果用户单击了“确定”按钮则将该答案返回,若单击了“取消”按钮或者直接关闭则返回空(null)值。
此方法的语法如下:
prompt(text,defaultText)
表1参数含义表
该方法通过参数text传入一个字符串,代表需要用户回答的问题。通过参数defaultText传入一个默认的字符串,该参数一般可设定为空。当用户填入问题的答案并单击“确定”按钮后,该答案作为prompt()方法的返回值返回;当用户单击“取消”按钮时,prompt()方法返回null。
该实施例利用prompt方法可以进行字符串交互的特性来实现和Java的交互。浏览器内核在成功调用loadURL()方法后,对prompt()的解析会将text和defaultText参数传入,并调用onJavascriptPrompt()方法。本发明重构该方法,实现一套自定义格式text和defaultText参数的格式,Java侧检测text参数和defaultText参数符合自定义格式时,则进行Javascript对Java的请求调用,否则进行prompt()方法的默认行为——弹出可交互的对话框。
据此,实现了Javascript对Java侧的请求传递。
另外,在所述Javascript侧调用Java侧之后,所述方法还可以包括:所述Java侧调用所述Javascript侧。
其中,Java侧调用Javascript侧的实现过程如下:
本实施例在Java侧建立一个发送队列JSSendList,Java侧将需要运行的Javascript语句放入队列。在Javascript侧设置一个间隔时间(如30ms),并利用函数setTimeout()建立定时器,利用prompt方法向Java侧发出“轮询”请求;同上,Java侧在OnJavascriptPrompt()方法中,接收到轮询请求后,取出JSSendList中的语句,将语句作为返回值返回给Javascript方法,Javascript侧直接使用eval()方法执行该语句。
进一步地,在该步骤101之前,所述方法还包括:在配置文件中添加配置项,根据当前配置文件加载插件管理(PluginManager)模块,如图3所示,其中所述配置项包含Javascript文件与Java文件的对应关系。
Javascript通过调用Java侧接口可以实现对系统本地资源的访问,为实现应用开发的灵活定制性,本实施例还采用了插件机制对这些资源类进行动态的配置管理,便于开发和新资源的定制扩展。
Javascript调用Java侧的代码利用了prompt的DOM解析,传递到Java侧的为自定义格式的字符串。一个Java功能模块实现插件(Plugin)接口后,可以被PluginManager动态加载。
PluginManager实现两个Hash表,Hash表一的元素为(serviceName,className),可以通过service名称寻找到实际类名;另一个Hash表二的元素为(serviceName,Plugin),该表中存放serviceName对应的plugin对象。
当Javascript侧请求调用Java时,PluginManager收到serviceName字符串,在Hash表一中寻找和serviceName对应的对象,若该对象不存在,则查找Hash表二,通过反射创建对应的对象,并存贮在Hash表一中使用。取出对应serviceName的plugin对象,调用其exec接口,传入回调ID以及args参数,即可完成对应的Java调用请求。
上述资源访问方法,对上层开发人员可见的只有Javascript接口,这样基于本实施例的框架采用前端web开发技术,就能开发出能在Android平台运行的程序,使得基于Android平台开发移动互联应用的门槛大大降低,从而可以更好地丰富终端的功能。
如图4所示,是本发明资源访问装置实施例的结构示意图,可应用于终端设备上,该装置包括第一调用模块41和第二调用模块42,其中:
第一调用模块,用于JS侧调用Java侧;
第二调用模块,用于Java侧调用所述JS侧。
另外,所述装置还包括插件管理模块43和加载模块44,该插件管理模块,用于加载配置文件,该配置文件中包含JS文件与Java文件的对应关系;该加载模块,用于加载所述插件管理模块,以便所述第一调用模块或所述第二调用模块执行调用操作。
优选地,所述第一调用模块,具体用于:所述JS侧采用默认的或重构的显示提示对话框方法向所述Java侧发送请求,该请求包括轮询请求。所述第二调用模块,具体用于:所述Java侧建立一个发送队列,将需要运行的JS语句放入该发送队列中;所述Java侧接收所述JS侧定时发送的轮询请求,从该发送队列获取当前JS语句,将当前JS语句作为返回值返回给所述JS侧。
其中,所述第一调用模块,具体用于:所述JS侧检测重构的显示提示对话框方法中的参数符合预定格式时,向所述Java侧发送所述请求。
上述资源访问装置,对上层可见的只有Javascript接口,使得基于Android平台开发移动互联应用的门槛大大降低,从而可以更好地完善终端的功能。
为了方便描述,以终端设备上的GPS传感器为例,阐述该发明实施例的实施步骤:
步骤201、在插件管理配置文件plugin.xml中添加配置项,即Javascript文件与Java文件的对应关系,这样使用下面描述的模块即可实现Javascript对GPS传感器的访问,配置项格式如下:
<plugin name=″GpsModel″value=″com.example.gpsmodel″/>
添加后,经过pluginManager模块的加载,就可以通过GpsModel反射访问到相应的com.example.gpsmodel类了;
步骤202、需要实现该GPS传感器的跨语言访问模块(即第一调用模块),以GPS传感器模块的获取当前值接口getCurrentGps为例,在相应的Javascript文件中,实现getCurrentGps接口,此类接口为异步调用接口,需实现successcallback和failcallback回调。通过本实施例的Javascript调用Java实现了调用Java侧功能模块,按照返回的状态分别执行successcallback和failcallback。
Java侧需要做的即是对Javascript侧调用的具体实现和结果的处理,如getCurrentGps调用到达的时候,Java侧继承实现平台提供的获取GPS传感器数值操作,对获取到的传感器值封装成约定的JavascriptON格式,当Javascript侧定时轮询时,作为回调的结果反馈到Javascript侧。
其中,Javascript对Java的调用,是使用的webkit内核在载入页面时候对Javascript的解析机制,当遇到Javascript的时候,通过JAVA本地调用(JNI)调用Java侧的JavascriptPrompt方法,通过扩展prompt函数实现了Javascript对Java的调用。
另外,Java对Javascript的调用使用了上次类似的原理,只是在Javascript侧启动轮询定时器,定时发送查询信息到Java侧,当Java侧有需要调用Javascript语句时,做为轮询消息的结果返回。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,上述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种资源访问方法,其特征在于,该方法包括:
JS侧调用Java侧;
所述Java侧调用底层系统资源接口。
2.根据权利要求1所述的方法,其特征在于:
所述JS侧调用Java侧之前,所述方法还包括:
添加预配置的JS文件与Java文件的对应关系。
3.根据权利要求1所述的方法,其特征在于:
所述JS侧调用Java侧包括:
所述JS侧采用默认的或重构的显示提示对话框方法向所述Java侧发送请求,该请求包括轮询请求。
4.根据权利要求1-3任一权利要求所述的方法,其特征在于:
所述JS侧调用Java侧之后,所述方法还包括:
所述Java侧调用所述JS侧。
5.根据权利要求4所述的方法,其特征在于:
所述Java侧调用所述JS侧包括:
所述Java侧建立一个发送队列,将需要运行的JS语句放入该发送队列中;
所述Java侧接收所述JS侧定时发送的轮询请求,从该发送队列获取当前JS语句,将当前JS语句作为返回值返回给所述JS侧。
6.一种资源访问装置,其特征在于,该装置包括:
第一调用模块,用于JS侧调用Java侧;
第二调用模块,用于Java侧调用所述JS侧。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
插件管理模块,用于加载配置文件,该配置文件中包含JS文件与Java文件的对应关系;
加载模块,用于加载所述插件管理模块,以便所述第一调用模块或所述第二调用模块执行调用操作。
8.根据权利要求6或7所述的装置,其特征在于:
所述第一调用模块,具体用于:
所述JS侧采用默认的或重构的显示提示对话框方法向所述Java侧发送请求,该请求包括轮询请求。
9.根据权利要求6或7所述的装置,其特征在于:
所述第二调用模块,具体用于:
所述Java侧建立一个发送队列,将需要运行的JS语句放入该发送队列中;
所述Java侧接收所述JS侧定时发送的轮询请求,从该发送队列获取当前JS语句,将当前JS语句作为返回值返回给所述JS侧。
10.根据权利要求8所述的装置,其特征在于:
所述第一调用模块,具体用于:
所述JS侧检测重构的显示提示对话框方法中的参数符合预定格式时,向所述Java侧发送所述请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102457328A CN102799477A (zh) | 2012-07-16 | 2012-07-16 | 资源访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012102457328A CN102799477A (zh) | 2012-07-16 | 2012-07-16 | 资源访问方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102799477A true CN102799477A (zh) | 2012-11-28 |
Family
ID=47198592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012102457328A Pending CN102799477A (zh) | 2012-07-16 | 2012-07-16 | 资源访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102799477A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440440A (zh) * | 2013-08-27 | 2013-12-11 | 浙江大学城市学院 | 一种增强JavaScript函数封装性的方法 |
CN103577197A (zh) * | 2013-11-18 | 2014-02-12 | 深圳市远行科技有限公司 | 一种安卓应用程序动态表单的实现方法 |
CN103995694A (zh) * | 2014-03-31 | 2014-08-20 | 中邮科通信技术股份有限公司 | 一种具备电信能力的移动客户端浏览器控件及其调用方法 |
CN104951289A (zh) * | 2014-03-28 | 2015-09-30 | 中国移动通信集团公司 | 一种调用系统底层函数的方法及系统 |
CN105607895A (zh) * | 2014-11-21 | 2016-05-25 | 阿里巴巴集团控股有限公司 | 一种基于应用程序编程接口的应用程序的运行方法和装置 |
CN105955786A (zh) * | 2016-05-17 | 2016-09-21 | 福建新大陆支付技术有限公司 | 一种基于html5的销售点终端的实现方法 |
CN106528601A (zh) * | 2016-09-23 | 2017-03-22 | 北京五八信息技术有限公司 | 动态配置组件的方法和装置 |
CN107193667A (zh) * | 2017-04-25 | 2017-09-22 | 北京小米移动软件有限公司 | 网页权限的更新方法及装置 |
CN108345507A (zh) * | 2017-01-22 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种JS模块与Java模块之间的通信方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030066059A1 (en) * | 2001-07-07 | 2003-04-03 | Samsung Electronics Co., Ltd. | Method for executing java application midlet using communication among java applications |
US6993589B1 (en) * | 1999-01-04 | 2006-01-31 | Emc Corporation | Method and apparatus for providing secure access to a computer system resource |
CN101587435A (zh) * | 2008-05-19 | 2009-11-25 | 北京亿企通信息技术有限公司 | 一种实现mvc的方法 |
CN101739277A (zh) * | 2009-12-08 | 2010-06-16 | 南京联创科技集团股份有限公司 | 基于自定义脚本方式管理业务监控系统的方法 |
CN102207873A (zh) * | 2011-06-15 | 2011-10-05 | 中国联合网络通信集团有限公司 | 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构 |
-
2012
- 2012-07-16 CN CN2012102457328A patent/CN102799477A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6993589B1 (en) * | 1999-01-04 | 2006-01-31 | Emc Corporation | Method and apparatus for providing secure access to a computer system resource |
US20030066059A1 (en) * | 2001-07-07 | 2003-04-03 | Samsung Electronics Co., Ltd. | Method for executing java application midlet using communication among java applications |
CN101587435A (zh) * | 2008-05-19 | 2009-11-25 | 北京亿企通信息技术有限公司 | 一种实现mvc的方法 |
CN101739277A (zh) * | 2009-12-08 | 2010-06-16 | 南京联创科技集团股份有限公司 | 基于自定义脚本方式管理业务监控系统的方法 |
CN102207873A (zh) * | 2011-06-15 | 2011-10-05 | 中国联合网络通信集团有限公司 | 基于安卓平台的JavaScript扩展对象实现方法及绑定接口结构 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440440A (zh) * | 2013-08-27 | 2013-12-11 | 浙江大学城市学院 | 一种增强JavaScript函数封装性的方法 |
CN103577197A (zh) * | 2013-11-18 | 2014-02-12 | 深圳市远行科技有限公司 | 一种安卓应用程序动态表单的实现方法 |
CN104951289A (zh) * | 2014-03-28 | 2015-09-30 | 中国移动通信集团公司 | 一种调用系统底层函数的方法及系统 |
CN103995694A (zh) * | 2014-03-31 | 2014-08-20 | 中邮科通信技术股份有限公司 | 一种具备电信能力的移动客户端浏览器控件及其调用方法 |
CN105607895A (zh) * | 2014-11-21 | 2016-05-25 | 阿里巴巴集团控股有限公司 | 一种基于应用程序编程接口的应用程序的运行方法和装置 |
CN105607895B (zh) * | 2014-11-21 | 2021-03-02 | 阿里巴巴集团控股有限公司 | 一种基于应用程序编程接口的应用程序的运行方法和装置 |
CN105955786B (zh) * | 2016-05-17 | 2019-01-25 | 福建新大陆支付技术有限公司 | 一种基于html5的销售点终端的实现方法 |
CN105955786A (zh) * | 2016-05-17 | 2016-09-21 | 福建新大陆支付技术有限公司 | 一种基于html5的销售点终端的实现方法 |
CN106528601A (zh) * | 2016-09-23 | 2017-03-22 | 北京五八信息技术有限公司 | 动态配置组件的方法和装置 |
CN108345507A (zh) * | 2017-01-22 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种JS模块与Java模块之间的通信方法及装置 |
CN108345507B (zh) * | 2017-01-22 | 2022-01-07 | 腾讯科技(深圳)有限公司 | 一种JS模块与Java模块之间的通信方法及装置 |
CN107193667A (zh) * | 2017-04-25 | 2017-09-22 | 北京小米移动软件有限公司 | 网页权限的更新方法及装置 |
CN107193667B (zh) * | 2017-04-25 | 2021-03-09 | 北京小米移动软件有限公司 | 网页权限的更新方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102799477A (zh) | 资源访问方法及装置 | |
US9313245B2 (en) | Adaptive streaming for on demand wireless services | |
CN104765617B (zh) | 基于html5实现的流应用功能接口分发方法及系统 | |
US8966508B2 (en) | Method for executing hybrid web application and apparatus therefor | |
CN111684778B (zh) | 应用功能的实现方法及电子设备 | |
CN107741844B (zh) | 一种应用安装包的生成方法和装置 | |
CN105122237A (zh) | 共享应用程序状态 | |
Espada et al. | Extensible architecture for context-aware mobile web applications | |
EP4210053A1 (en) | Application program control method and apparatus, electronic device, and storage medium | |
CN104965848A (zh) | 一种前端资源加载方法及装置 | |
CN107291744A (zh) | 确定及运用应用程序之间的关系关联的方法及装置 | |
CN101957756A (zh) | 一种智能移动终端程序快速生成系统及方法 | |
CN103019712A (zh) | 集成应用 | |
WO2013134813A1 (en) | A method and system of application development for multiple device client platforms | |
CN101807204A (zh) | 一种遥感图像处理Web服务动态生成方法 | |
CN103457982A (zh) | 一种移动互联网网页和移动终端能力交互的方法和装置 | |
CN112954717B (zh) | 基于h5页面的家电配网方法和装置 | |
CN106357781A (zh) | 一种资源服务调用接口创建方法及系统 | |
CN101964742B (zh) | 一种网络开放能力使用方法、系统和装置 | |
CN115905742A (zh) | 一种数据展示方法、装置、设备及存储介质 | |
CN104980807A (zh) | 一种用于多媒体互动的方法及终端 | |
CN103685491A (zh) | 一种应用服务提供方法、系统及相关设备 | |
CN105204824A (zh) | 一种应用程序与移动终端之间通讯的方法及装置 | |
Honkala | Web user interaction: a declarative approach based on XForms | |
CN107209782B (zh) | 交互式操作的方法以及应用该方法的传送机器、接收机器与交互式操作系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20121128 |
|
RJ01 | Rejection of invention patent application after publication |