资源访问方法及装置的制作方法

文档序号:6373364阅读:178来源:国知局
专利名称:资源访问方法及装置的制作方法
技术领域
本发明主要涉及移动终端上基于插件的web应用程序开发技术,尤其涉及一种资源访问方法及装置。
背景技术
随着移动互联时代的到来,无线上网速度大规模提升,智能终端越来越被消费者青睐,如目前的苹果手机操作系统(IOS)、安卓(Android)、Windows Phone几大智能生态系统。随着终端性能及上网速度的提升,基于浏览器的网页(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侦Ij。优选地,所述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平台开发移动互联应用的门槛大大降低,从而可以更好地丰富终端的功能。


图I是本发明资源访问方法实施例的流程图;图2是本发明资源访问方法的框架调用层次示意图;图3是本发明的插件管理模块的结构示意图;图4是本发明资源访问装置实施例的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。使用HTML5+CSS+Javascript的MVC开发模式开发web应用,使之运行在Android系统的浏览器内核webkit上。其中,为了丰富应用功能与用户体验,需要访问终端设备的本地资源,如传感器、照相机等。由于Android对外提供的API是Java接口,这就涉及到Javascript跨语言访问Java的实现。同时,为实现对资源的访问权限控制,具体应用需采用插件管理的方式按需配置本地资源。本发明实施例提供了一种资源访问方法,如图I所示,该方法包括
步骤101、Javascript 侧调用 Java 侧;步骤102、Java侧调用底层系统资源接口。上述资源访问方法的框架调用层次如图2所示,其中,Javascript调用Java实现过程如下Javascript调用Java需要实现Javascript和Java侧的消息传递,为了实现消息传递,利用了 Javascript中的显示提示对话框prompt ()方法。Javascript中的prompt ()方法用于收集用户关于特定问题的反馈信息,该方法产生一个带有短字符串消息的问题和“确定”、“取消”按钮的模式对话框,提示用户输入上述问题的答案并选择单击其中一个按钮表示确定还是取消该提示框。如果用户单击了 “确定”按钮则将该答案返回,若单击了“取消”按钮或者直接关闭则返回空(null)值。此方法的语法如下 prompt (text, defaultText)表I参数含义表
参数描述
text可选,要在对话框中显示的纯文本(而不是HTML格式
的文本)
defaultText 可选,默认的输入文本该方法通过参数text传入一个字符串,代表需要用户回答的问题。通过参数defaultText传入一个默认的字符串,该参数一般可设定为空。当用户填入问题的答案并单击“确定”按钮后,该答案作为prompt ()方法的返回值返回;当用户单击“取消”按钮时,prompt ()方法返回 null。该实施例利用prompt方法可以进行字符串交互的特性来实现和Java的交互。浏览器内核在成功调用IoadURLO方法后,对prompt ()的解析会将text和defaultText参数传入,并调用onJavascriptPromptO方法。本发明重构该方法,实现一套自定义格式text和defaultText参数的格式,Java侧检测text参数和defaultText参数符合自定义格式
时,贝1J进行Javascript对Java的请求调用,否则进行prompt ()方法的默认行为-弹出
可交互的对话框。据此,实现了 Javascript对Java侧的请求传递。另外,在所述Javascript侧调用Java侧之后,所述方法还可以包括所述Java侧调用所述Javascript侦lj。其中,Java侧调用Javascript侧的实现过程如下本实施例在Java侧建立一个发送队列JSSendList, Java侧将需要运行的Javascript语句放入队列。在Javascript侧设置一个间隔时间(如30ms),并利用函数setTimeout Q建立定时器,利用prompt方法向Java侧发出“轮询”请求;同上,Java侧在OnJavascriptPromptO方法中,接收到轮询请求后,取出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侦lj。其中,Javascript对Java的调用,是使用的webkit内核在载入页面时候对Javascript的解析机制,当遇到Javascript的时候,通过JAVA本地调用(JNI)调用Java侧的JavascriptPrompt方法,通过扩展prompt函数实现了 Javascript对Java的调用。另外,Java对Javascript的调用使用了上次类似的原理,只是在Javascript侧启动轮询定时器,定时发送查询信息到Java侧,当Java侧有需要调用Javascript语句时,做为轮询消息的结果返回。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,上述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种资源访问方法,其特征在于,该方法包括 JS侧调用Java侧; 所述Java侧调用底层系统资源接口。
2.根据权利要求I所述的方法,其特征在于 所述JS侧调用Java侧之前,所述方法还包括 添加预配置的JS文件与Java文件的对应关系。
3.根据权利要求I所述的方法,其特征在于 所述JS侧调用Java侧包括 所述JS侧采用默认的或重构的显示提示对话框方法向所述Java侧发送请求,该请求包括轮询请求。
4.根据权利要求1-3任一权利要求所述的方法,其特征在于 所述JS侧调用Java侧之后,所述方法还包括 所述Java侧调用所述JS侦1|。
5.根据权利要求4所述的方法,其特征在于 所述Java侧调用所述JS侧包括 所述Java侧建立一个发送队列,将需要运行的JS语句放入该发送队列中; 所述Java侧接收所述JS侧定时发送的轮询请求,从该发送队列获取当前JS语句,将当前JS语句作为返回值返回给所述JS侧。
6.一种资源访问装置,其特征在于,该装置包括 第一调用模块,用于JS侧调用Java侧; 第二调用模块,用于Java侧调用所述JS侦U。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括 插件管理模块,用于加载配置文件,该配置文件中包含JS文件与Java文件的对应关系; 加载模块,用于加载所述插件管理模块,以便所述第一调用模块或所述第二调用模块执行调用操作。
8.根据权利要求6或7所述的装置,其特征在于 所述第一调用模块,具体用于 所述JS侧采用默认的或重构的显示提示对话框方法向所述Java侧发送请求,该请求包括轮询请求。
9.根据权利要求6或7所述的装置,其特征在于 所述第二调用模块,具体用于 所述Java侧建立一个发送队列,将需要运行的JS语句放入该发送队列中; 所述Java侧接收所述JS侧定时发送的轮询请求,从该发送队列获取当前JS语句,将当前JS语句作为返回值返回给所述JS侧。
10.根据权利要求8所述的装置,其特征在于 所述第一调用模块,具体用于 所述JS侧检测重构的显示提示对话框方法中的参数符合预定格式时,向所述Java侧发送所述请求。
全文摘要
本发明提供了一种资源访问方法及装置,该资源访问方法包括JS侧调用Java侧;所述Java侧调用底层系统资源接口。上述资源访问方法及装置,对上层开发人员可见的只有Javascript接口,这样基于本发明的框架采用前端web开发技术,就能开发出能在Android平台运行的程序,使得基于Android平台开发移动互联应用的门槛大大降低,从而可以更好地丰富终端的功能。
文档编号G06F9/46GK102799477SQ20121024573
公开日2012年11月28日 申请日期2012年7月16日 优先权日2012年7月16日
发明者王明 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1