CN110688232A - 应用程序调用方法、终端设备及计算机可读存储介质 - Google Patents
应用程序调用方法、终端设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110688232A CN110688232A CN201810727750.7A CN201810727750A CN110688232A CN 110688232 A CN110688232 A CN 110688232A CN 201810727750 A CN201810727750 A CN 201810727750A CN 110688232 A CN110688232 A CN 110688232A
- Authority
- CN
- China
- Prior art keywords
- application
- application program
- target
- request instruction
- calling
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种应用程序调用方法、终端设备及计算机可读存储介质,该应用程序调用方法包括接收调用目标功能操作的第一调用请求指令;根据第一调用请求指令,向操作系统的活动管理模块发送第二调用请求指令;根据第二调用请求指令确定调用的原生应用程序,运行目标功能操作对应的原生应用程序或者原生页面。本发明提供的终端设备具有处理器以及存储器,处理器执行计算机程序时可以实现上述的应用程序调用方法。本发明的计算机可读存储介质上存储有用于实现上述方法计算机程序。本发明可以让用户方便的实现应用程序框架的应用程序与原生应用程序之间的相互调用。
Description
技术领域
本发明涉及电子设备的控制领域,具体地,是在一种在终端设备上实现应用程序调用方法以及实现这种方法的装置,还涉及一种实现上述方法的终端设备以及计算机可读存储介质。
背景技术
智能手机、平板电脑等终端设备成为人们日常生活中最经常使用的电子设备,人们喜欢在智能电子设备上安装各种应用程序,并且在终端设备上同时运行大量的应用程序。现在很多终端设备的操作系统都提供开放的SDK(Software Development Kit,软件开发工具)以及开放的API(Application Programming Interface,应用程序编程接口),以降低应用程序开发的难度,也为应用程序的开发提供一定的标准,因此,人们可选择的应用程序也越来越多。
然而,现有的应用程序的安装包APK大多使用JAVA等语言编写的程序,其中包含有大量按照预先规定的逻辑编写而成的组件,因此,现有的应用程序的安装包需要由终端设备的操作系统直接运行,例如,应用程序的安装包下载到终端设备后,由终端设备的操作系统对安装包进行解析,并且执行安装操作。现有的应用程序的安装包在安装过程中,操作系统将获取安装包的数据并且根据预先规定的逻辑生成相应的文件,包括生成应用程序所需要的控件,这些控件往往是直接运行在操作系统上并且实现特定的功能。并且,在应用程序安装完毕后,通常在终端设备的桌面上显示该应用程序的图标,用户需要运行该应用程序时,点击该应用程序的图标,由应用程序的操作系统直接运行该应用程序。
随着应用程序实现的功能越来越多,应用程序的页面也越来越多,且运行时占用的硬件资源也越来越多,例如占用更多的内存资源,并且需要调用大量的接口等。由于应用程序的每个页面的设置信息、调用接口的程序文件等都需要写入到应用程序的安装包中,因此,导致应用程序的安装包数据量非常大,用户下载应用程序的安装包往往需要较长的等待时间,并且由于安装包的数据量较大,下载安装包也往往花费不少的数据流量。
由于现在的应用程序的安装包都是需要一次性下载的,也就是用户需要下载应用程序完整的安装包以后,操作系统才对安装包进行解析、安装,因此用户往往需要等到较长的时间才能打开应用程序,用户体验较差。
此外,现有的应用程序的功能较为单一,已经不能满足人们对应用程序功能多样化、场景人性化的要求。例如,当用户使用播放器应用程序播放某一电影时,人们希望了解该电影的影评信息,但是,现有的播放器应用程序往往不能够提供影评信息,此时,往往需要借助于第三方的应用程序实现,例如借助于具有影评功能的应用程序实现。但是,如果用户需要浏览该电影的影评,在需要退出当前运行的播放器应用程序,例如将播放器应用程序置于后台运行,然后点击运行具有影评功能的应用程序,从而实现应用程序的切换。并且,当用户浏览影评完毕后,如果希望继续观看该电影,则需要退出影评应用程序,并且重新运行播放器应用程序,例如点击播放器应用程序的图标。这样的操作导致用户需要频繁的在终端设备上进行点击的操作,用户体验较差。
因此,现有一些操作系统提供应用程序相互调用的机制,例如,在终端设备启动运行以后,终端设备将运行活动管理模块,如果终端设备上运行的应用程序可以被其他应用程序所调用,则需要向活动管理模块提供一个调用接口,因此,在活动管理模块的缓存中将记录大量的调用接口的信息,每一个调用接口信息对应于一个可以被调用的应用程序。
当终端设备运行时,如果一个应用程序需要调用另一个应用程序,则向操作系统发出请求,操作系统通过活动管理模块查找需要被调用的应用程序的调用接口文件,并且通过调用接口跳转运行被调用的应用程序。然而,这种方式需要被调用的应用程序向活动管理模块提供调用接口,因此应用程序需要实现提供调用接口的功能,导致应用程序的开发难度较大,并且应用程序的代码量较多,应用程序的安装包数据量也较大,影响应用程序的下载与运行速度。
发明内容
本发明的第一目的是提供一种实现应用程序框架的应用程序与原生应用程序之间调用的应用程序调用方法。
本发明的第二目的是提供一种让用户方便的调用另一应用程序的应用程序调用装置。
本发明的第三目的是提供一种实现上述应用程序调用方法的终端设备。
本发明的第四目的是提供一种被处理器读取并执行时能够实现上述应用程序调用方法的计算机可读存储介质。
为了实现上述的第一目的,本发明提供的应用程序调用方法应用于终端设备,该方法包括接收调用目标功能操作的第一调用请求指令;根据第一调用请求指令,向操作系统的活动管理模块发送第二调用请求指令;根据第二调用请求指令确定调用的原生应用程序,运行目标功能操作对应的原生应用程序或者原生页面。
由上述方案可见,当应用程序框架的应用程序需要调用某一原生应用程序时,该应用程序首先向应用程序框架发送第一调用请求指令,声明需要调用的原生应用程序。应用程序框架根据第一调用请求指令向操作系统的活动管理模块发送第二调用请求指令,由活动管理模块调用所需要运行的原生应用程序或者原生页面,从而实现应用程序框架的应用程序与原生应用程序之间的调用。
另外,由于目标应用程序是运行在应用程序框架上,应用程序框架提供应用程序运行环境,例如目标应用程序的配置文件下载以后由应用程序框架解析,并且由应用程序框架提供的接口、组件等支持应用程序的运行。这样,目标应用程序的配置文件的数据量可以很小,当需要运行目标应用程序时,可以快速的下载目标应用程序的配置文件并且启动目标应用程序,减小目标应用程序启动运行时的等待时间,提升用户的体验。
一个优选的方案是,根据第一调用请求指令,向操作系统的活动管理模块发送第二调用请求指令包括:对第一格式的第一调用请求指令进行解析,获取第一调用指令中的第一调用信息,将第一调用信息写入第二格式的第二调用请求指令中,将第二调用请求指令发送至活动管理模块。
由于第一调用请求指令是应用程序框架的应用程序向应用程序框架发送的调用指令,该调用指令往往只能被应用程序框架所识别,而无法被操作系统的活动管理模块所识别,因此,应用程序框架通过对第一格式的第一调用请求指令进行转义,形成包含有第一调用信息的第二调用请求指令,以便于活动管理模块能够解析第二调用请求指令。
进一步的方案是,向活动管理模块发送第二调用请求指令前,还执行:根据第一调用信息,确定第一调用指令所调用的目标功能操作对应于原生应用程序。
由此可见,在应用程序框架接收到第一调用请求指令后,需要判断该指令是否调用原生应用程序,如果调用的应用程序是原生应用程序,则向活动管理模块发送第二调用指令,如果调用的是应用程序框架下的应用程序,则根据第一调用请求指令的调用信息运行所调用的目标应用程序。
本发明提供的应用程序调用方法还可以是:应用于终端设备,该方法包括接收调用目标功能操作的第三调用请求指令;根据第三调用请求指令,向应用程序框架发送第四调用请求指令;根据第四调用请求指令确定调用的目标应用程序,运行目标功能操作对应的目标应用程序或者目标页面。
由上述方案可见,当原生应用程序调用应用程序框架下的应用程序时,原生应用程序向活动管理模块发送第三调用请求指令,由活动管理模块向应用程序框架发送第四调用请求指令,由此实现对应用程序框架的应用程序的调用。
一个优选的方案是,根据第三调用请求指令,向应用程序框架发送第四调用请求指令包括:对第三调用请求指令进行解析,获取第三调用指令中的第二调用信息,将第二调用信息写入第四调用请求指令中,将第四调用请求指令发送至应用程序框架。
由此可见,通过获取第三调用请求指令中的第二调用信息来确定调用的应用程序为应用程序框架下的应用程序,并且向应用程序框架发送第四调用请求指令,从而将第二调用信息发送至应用程序框架。
进一步的方案是,获取第三调用指令中的第二调用信息包括:根据第三调用指令获取调用的目标应用程序名称和/或目标页面的路径。
可见,获取第二调用信息中的目标应用程序名称或者目标页面的路径以后,应用程序框架可以快速的查找到需要运行的目标应用程序或者目标页面。
更进一步的方案是,运行目标功能操作对应的目标应用程序或者目标页面前,还执行:在应用程序框架的应用管理描述文件中查找目标应用程序或者目标页面,并确认目标应用程序或者目标页面允许被原生应用程序所调用。
由此可见,应用程序框架接收到第四调用请求指令以后,需要判断所调用的目标应用程序或者目标页面是否为允许原生应用程序调用的应用程序或者页面,只有允许原生应用程序调用的情况下才会调用目标应用程序或者目标页面,如果不允许原生应用程序调用,则屏蔽第四调用请求指令,从而避免不允许原生应用程序调用的应用程序或者页面被调用。
更进一步的方案是,运行目标功能操作对应的目标应用程序或者目标页面包括:判断目标功能操作对应的目标应用程序的配置文件是否已经下载,如确定目标应用程序的配置文件未下载,则下载目标应用程序的配置文件,对配置文件进行解析并运行目标应用程序或者目标页面。
这样,如果原生应用程序调用一个未下载的应用程序,则应用程序框架可以通过下载目标应用程序的配置文件并且对配置文件进行解析的方式运行目标应用程序。
为实现上述的第二目的,本发明提供的应用程序调用装置应用于终端设备,包括:第一调用请求指令接收模块,用于接收调用目标功能操作的第一调用请求指令;第二调用请求指令发送模块,用于根据第一调用请求指令,向操作系统的活动管理模块发送第二调用请求指令;运行模块,用于根据第二调用请求指令确定调用的原生应用程序,运行目标功能操作对应的原生应用程序或者原生页面。
为实现上述的第三目的,本发明提供的终端设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现上述应用程序调用方法的各个步骤。
为实现上述的第四目的,本发明提供的计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述应用程序调用方法的各个步骤。
附图说明
图1是本发明应用程序调用方法第一实施例的流程图。
图2是本发明应用程序调用方法第二实施例的流程图。
图3是本发明应用程序调用方法第二实施例中运行目标应用程序的流程图。
图4是本发明应用程序调用装置第一实施例的结构框图。
图5是本发明应用程序调用装置第二实施例的结构框图。
图6是本发明终端设备实施例的结构框图。
以下结合附图及实施例对本发明作进一步说明。
具体实施方式
本发明应用程序调用方法是应用在诸如智能手机或者平板电脑等终端设备上,用于实现运行在应用程序框架下的应用程序与原生应用程序之间的相互调用。本发明的应用程序调用装置运行在终端设备上,并且用于实现上述的应用程序调用方法。
由于现有的应用程序直接运行在终端设备的操作系统上,这些应用程序被称为原生应用程序。例如,用户需要运行某一个原生应用程序时,需要先下载该原生应用程序的安装包,并且由操作系统对安装包进行解析。但是,由于现有的原生应用程序的安装包的数据量非常大,导致应用程序的安装包下载时间较长,且安装时间也较长。
为此,本实施例的终端设备上设置应用程序框架以支持应用程序的运行。例如,应用程序框架是运行在终端设备操作系统上的软件,在终端设备的操作系统上运行有应用程序框架,并且,操作系统上还可以运行原生应用程序。可以理解,应用程序框架以及原生应用程序都是直接运行在操作系统上,并且由操作系统支持运行。因此,本实施例中,应用程序框架可以预先是下载安装到终端设备上,也可以随操作系统一并安装到终端设备上。
应用程序框架运行过程中,与原生应用程序相似的地方在于,应用程序框架可以直接使用操作系统所提供的资源与服务,例如应用程序框架运行时可以根据需求调用操作系统所提供的各种接口、使用操作系统的原生控件,还可以从操作系统接收消息与广播等,也可以通过操作系统向应用程序等发送消息。
为了避免原生应用程序在下载安装包、安装的过程中,用户需要长时间等待的问题,运行在应用程序框架上的应用程序在启动前需要下载的是应用程序的配置文件,配置文件下载到终端设备以后,由应用程序框架进行解析,因此运行在应用程序框架上的应用程序由应用程序框架支持运行。
通常,运行在应用程序框架上的应用程序的配置文件中包括有签名模块以及源文件模块,其中,签名模块包括已经签名并且加密的秘钥文件。源文件模块包括公用资源以及组件、页面目录、项目配置文件manifest等,此外,配置文件还包括开发者针对该应用程序自行定义项目需要的各种模块及配置信息等。
其中,公用资源包括诸如应用程序的图标、应用程序所使用的特殊字体或者特定的背景图片、应用程序的欢迎视频、音频等数据。应用程序公用的组件,例如多个页面或者多个代码段都需要使用的组件,也可以作为公用资源,设置在配置文件的公用资源库中。
页面目录包括应用程序中各个页面的信息,即应用程序的文件夹结构,例如包括各个页面的名称、页面的路径等信息,并且,页面目录还包括每一页面的描述信息,例如该页面的具体布局信息、渲染过程中所需要调用的组件,当然,如果某一页面有特殊的渲染要求,页面目录页可以记录该页面的信息。此外,页面目录还记载各个页面之间的运行逻辑,例如多个页面之间的跳转关系、调用关系等。
项目配置文件包括应用程序的描述,例如声明所需要调用的接口、声明应用程序所需要接收的消息、声明可以被其他应用程序调用等,当然,如果应用程序设置有自定义的组件,也可以将自定义的组件设置在项目配置文件中。
应用程序框架设置有运行支持模块、沙箱模型模块、消息处理模块以及应用管理模块,并且,应用程序框架上可以运行多个应用程序。需要说明的是,运行在应用程序框架上的应用程序在运行过程中通常并不直接使用操作系统所提供的资源或者服务,主要是使用应用程序框架所提供的资源与服务。
应用程序框架的运行支持模块用于支持运行在应用程序框架上的应用程序的运行,当前应用程序框架上有应用程序运行时,运行支持模块将启动并且提供应用程序运行过程中所需要的服务。运行支持模块的具体结构将在下文详细描述。
沙箱模型模块为运行在应用程序框架上的应用程序提供运行所需要的沙箱模型,从而实现不同应用程序之间的权限隔离、数据隔离,例如为每一个应用程序提供自身的权限管理,且隔离各个应用程序的数据,避免一个应用程序不恰当的获取另一个应用程序的数据。例如,沙箱模型模块可以设定、记录每一个应用程序能够获取的权限以及不允许获取的权限,并且设定应用程序之间的数据分享、调用机制,通过该机制对各个应用程序的数据进行管理。
消息处理模块用于对应用程序框架上的每一个应用程序接收、发送消息的活动进行管理,包括消息接收注册、消息分发以及消息发送的管理。例如应用程序需要接收某一消息,可以向应用程序框架发出请求接收该消息的请求指令,消息处理模块将创建该消息的接收队列,并且将应用程序添加到该消息接收队列中,实现应用程序消息接收的注册。
优选的,运行在应用程序框架上的应用程序可以静态的注册接收消息,也可以动态的注册接收消息。应用程序静态注册接收消息是在应用程序的配置文件中声明需要接收某一消息,消息处理模块根据该声明将应用程序添加至该消息的接收队列中。应用程序动态注册接收消息是在应用程序运行过程中临时需要接收某一消息,向应用程序框架发出临时接收某一消息的注册请求,消息处理模块根据该请求临时将应用程序框架添加至该消息的接收队列中。
当然,消息处理模块还需要对动态注册接收消息的应用程序进行管理,例如当应用程序不需要再接收该消息时,由应用程序发出注销信息,消息处理模块即将动态注册的应用程序从该消息的接收队列中移除。
如果应用程序框架接收到消息,消息处理模块还需要对所接收到的消息进行分发,例如应用程序框架上的第一个应用程序向第二个应用程序发送消息,第一个应用程序并不是直接向第二个应用程序发送消息,而是由第一个应用程序向应用程序框架发送该消息,由消息处理模块查找到该消息的接收队列,并且向接收队列中的应用程序发送该消息。例如该消息队列中包括第二个应用程序,则消息处理模块向第二个应用程序分发该消息。
应用管理模块用于管理各个应用程序的运行,例如根据用户的指令启动某一个应用程序,或者根据用户的指令关闭某一个应用程序。又例如,将某一个应用程序置于前台运行或者转入后台运行,在某一个应用程序后台运行时间过长后,将该应用程序转入非活跃状态等。
并且,用户可以直接运行一个并未下载配置文件的应用程序,例如在应用程序框架的主页面上显示多个应用程序的图标,这些应用程序包括已经下载配置文件的应用程序以及未下载配置文件的应用程序,用于可以直接点击一个并未下载配置文件的应用程序的图标,应用管理模块可以从服务器上下载该应用程序的配置文件,并且对配置文件进行解析,启动运行该应用程序。当然,如果用户需要删除某一应用程序的配置文件,也可以由应用管理模块对该应用程序的配置文件进行删除的操作。
由于应用程序运行前下载的是配置文件,而不是安装包,且下载的配置文件由应用程序框架进行解析。因此,为了减小用户下载配置文件时的等待时间,需要减小配置文件的数据量,例如,应用程序的配置文件中所包含的页面信息中,仅仅包括应用程序页面的描述信息,但不包括该页面渲染后的完整数据,对于应用程序所需要调用的接口,应用程序的配置文件仅仅给出了应用程序所需要调用的各种接口的名称与调用的规则,但不提供具体的调用接口的函数。这样,运行在应用程序框架上的应用程序的配置文件数据量很少,通常在1M以下。终端设备可以在极短时间内完成应用程序的配置文件的下载。
在应用程序的配置文件下载完毕以后,应用程序框架对配置文件进行解析并随即运行应用程序,例如由运行支持模块支持应用程序的运行。
运行支持模块内设置有第一JS引擎、渲染引擎、控件管理模块、桥接模块、接口管理模块、第三方服务模块以及应用框架等。
在应用程序框架运行过程中,需要使用操作系统提供的资源,因此,运行支持模块也需要获取操作系统提供的资源,如使用操作系统提供的原生控件以及接口等。
由于应用程序的配置文件是由终端设备下载,因此应用程序框架需要从操作系统获取所下载的配置文件。目前,大部分应用程序的配置文件使用JS(Java Script)语言编写,在操作系统内设置第二JS引擎,用于将配置文件编译成应用程序框架能够解析的语言。当然,应用程序框架也可以直接从操作系统获取配置文件,由运行支持模块内的第一JS引擎对配置文件进行解析。
对配置文件解析后,需要渲染生成应用程序的页面,例如由渲染引擎获取配置文件中页面的描述信息,并且根据描述信息来渲染页面。优选的,应用程序的配置文件中包含有关于页面的基础设置信息,例如包括页面背景图案的信息、页面字体样式的信息、图标的位置信息、头像显示位置等信息,但并不包含该页面渲染后的数据,也就是配置文件中页面信息并不是渲染后的页面的数据。
进一步的,应用程序的配置文件中包含有多个组件、运行逻辑以及描述信息等,其中配置文件的组件是根据应用程序框架的要求预先设定的组件,且组件与终端设备的操作系统的原生控件存在对应关系,也就是通过该组件的标识可以确定该组件对应的操作系统原生控件的名称等。配置文件的运行逻辑用于确定应用程序运行时的逻辑,例如页面之间的上下级关系,即从某一个页面进入下一级页面或者返回上一级页面的关系,并且指示页面上不同按键的作用,如点击某一按键后跳转至下一个页面的逻辑关系等。而描述信息则包含页面的布局信息、颜色、字体、资源、各种声明等。
因此,在渲染引擎渲染应用程序的页面时,需要使用配置文件中的运行逻辑、描述信息,由于描述信息已经给出了页面上各种图标、文字的布局、样式等信息,因此,根据这些描述信息可以实现某一个页面的渲染。
优选的,应用程序框架使用操作系统提供的原生控件生成原生页面,因此,在渲染应用程序的页面时,需要根据配置文件中组件与原生控件之间的对应关系,获取配置文件中的组件所对应的原生控件,即获取操作系统中用于生成图标、窗口或者导航栏等控件,并且基于这些原生控件渲染生成应用程序的原生页面。因此,控件管理模块需要获取配置文件中组件与原生控件的映射关系,并且根据这些映射关系获取操作系统相对应的原生控件,使用原生控件并根据描述信息来实现页面的渲染,从而获得应用程序的原生页面。可见,原生页面是基于操作系统的原生控件所渲染形成的页面,这些页面的显示效果与传统的应用程序的页面显示效果相同,从而确保用户体验不会变化。
当然,应用程序框架也提供自身的控件,例如应用框架内包含有应用程序框架所提供的内建控件,渲染生成应用程序的页面时,也可以获取内建控件进行渲染,因此,控件管理模块可以根据实际需要从应用框架中获取所需要的内建控件。
在应用程序运行过程中,应用程序可能需要调用各种接口,例如使用操作系统提供的某一个接口。接口管理模块根据应用程序的描述信息,获取应用程序所需要使用的操作系统的某一个接口的声明,根据该声明确定所需要调用的接口的名称或者ID等信息,并通过桥接模块从操作系统中调取该接口。因此,在应用程序的配置文件中,只需要声明调用某一接口即可,而不需要提供使用该接口的具体函数,从而减小应用程序的配置文件的数据量。
当然,应用程序框架也提供内建接口,例如在应用框架中提供内建接口,应用程序也可以调用内建接口,例如在描述文件中声明需要调用哪一内建接口,接口管理模块将根据描述文件确定所需要调用的内建接口并且提供相应的内建接口给应用程序使用。
此外,应用程序框架还可以向应用程序提供第三方服务,第三方服务是由运行在操作系统上的应用程序等提供的服务,例如运行在应用程序框架上的应用程序需要使用运行在操作系统上的应用程序的功能时,可以通过第三方服务模块来使用该功能。
通常,第三方服务是在应用程序框架内提供专用的调用接口,当应用程序需要使用第三方服务时,通过这些专用的调用接口使用相应的功能。例如,在第三方服务模块内设置有推送模块、注册模块、支付模块以及统计模块等,应用程序可以通过这些模块实现推送消息的接收、账号注册、支付以及信息统计等功能。可以理解,推送模块注册模块、支付模块以及统计模块是第三方的原生应用程序提供给应用程序框架的调用接口。
此外,应用程序框架自身也可以向应用程序提供多种服务,例如在应用框架内还设置有页面管理模块、路由管理模块以及MVVM模块等,页面管理模块用于实现应用程序的页面管理,例如实现页面的跳转控制、页面的开启与关闭等。并且,页面管理模块可以通过获取应用程序的配置文件中的运行逻辑,实现多个页面之间的跳转关系的设定,从而确定应用程序的多个页面的逻辑。
路由管理模块为应用程序提供路由服务,例如应用程序需要发送消息到某一个特定的节点时,路由管理模块将提供发送该消息的路径,并且将该信息按照该路径发送至当前终端设备的下一个节点上。MVVM模块用于实现MVVM(Model-View-View-Model)功能,例如实现应用程序中视图与模型的分离。
应用框架内提供的内建控件、内建接口以及各种服务都可以被应用程序调用,因此,应用程序的配置文件中并不需要提供实现这些功能的代码,只需要在描述文件中声明需要调用这些功能模块即可。
当应用程序的配置文件下载以后,应用程序框架对配置文件进行解析,首先获取配置文件的签名信息,即获取配置文件中的秘钥文件,使用秘钥文件对配置文件的真实性进行验证。在配置文件通过验证以后,在对配置文件中的源文件模块进行解析。
例如,运行应用程序时,首先获取项目配置文件,获取各种声明信息,如注册接收消息、设置应用程序的调用信息等。同时,渲染生成应用程序的主页面,此时需要从页面目录获取主页面的描述信息,并且确定渲染过程中所需要使用的组件,应用程序框架根据这些组件获取对应的原生控件或者内建控件,由渲染引擎渲染生成主页面。
如果用户在主页面执行操作,例如点击某一按键或者滑动形成预设的轨迹,则根据设定的运行逻辑,执行相应的操作,例如调用某一接口或者调整至另一页面等。
可见,正是由于运行在应用程序框架上的应用程序的配置文件中仅仅包含多个组件、运行逻辑以及各个页面的描述信息,而不会提供渲染后的页面的完整数据,可以大大减少配置文件的数据量。另一方面,对于应用程序运行过程中需要调用的接口以及调用的服务,只需要在配置文件中声明需要调用哪些接口或者服务即可,而不需要提供实现这些服务的具体函数或者代码,因此配置文件的数据量非常小,其下载速度非常快,可以在极短时间内完成配置文件的下载,且应用程序框架在解析配置文件时,所花费的时间也很短,能够在很短时间内实现应用程序的运行。
这样,运行在应用程序框架下的应用程序与原生应用程序相比,运行在应用程序框架下的应用程序的配置文件下载、解析能够在极短时间内完成,因此对于未下载配置文件的应用程序而言,只要用户发出了运行该应用程序的指令,即可以瞬间完成配置文件的下载与运行,从而瞬间打开应用程序。通常,应用程序的配置文件的下载与解析可以在后台完成,用户只需要点击应用程序的图标,即使该应用程序的配置文件并未下载,用户几乎不需要等待即已经打开应用程序的主页面。
由于应用程序运行的时候,所显示的页面也是经过原生控件渲染后的页面,且各种接口均由应用程序框架提供,因此,不会影响用户使用应用程序的体验。
然而,由于运行在应用程序框架上的应用程序运行过程中,可能需要调用其他的应用程序或者应用程序的功能页面,例如需要调用原生应用程序或者原生应用程序的某一个页面。但是现在的应用程序框架并没有提供应用程序、功能页面与原生应用程序相互调用的机制,因此,本实施例就是提供一种实现应用程序框架的应用程序与原生应用程序之间相互调用的方法,包括应用程序框架的应用程序在运行过程中调用原生应用程序的具体方法,还包括原生应用程序调用应用程序框架下的应用程序的具体方法。
下面结合图1介绍应用程序框架下的应用程序调用原生应用程序的过程。
首先,执行步骤S101,接收调用目标功能操作的第一调用请求指令。
当应用程序框架上的应用程序运行时,如果需要调用原生应用程序或者原生应用程序的某一个功能页面,则向应用程序框架发送需要调用目标功能操作的第一调用请求指令。本实施例中,目标功能操作可以由原生应用程序实现,也可以由原生应用程序的功能页面实现,因此,第一调用请求指令需要声明调用的是哪一个原生应用程序或者是哪一个原生应用程序的哪一个功能页面。
由于原生应用程序的名称以及原生应用程序的各个功能页面可以从原生应用程序的开发者文档中获取,并且原生应用程序的开发者文档是公开的文档,因此,当应用程序需要调用某一原生应用程序时,开发者首先了解需要调用的原生应用程序的开发者文档,并且从开发者文档中获取需要调用的原生应用程序的名称、类型以及功能页面的名称等信息,并且将这些信息记录在应用程序中,以便于应用程序发出第一调用请求指令。
步骤S102,对第一格式的第一调用请求指令进行解析。
本实施例中,发出第一调用请求指令的应用程序为初始应用程序,而被调用的应用程序为目标应用程序,被调用的功能页面是目标功能页面,因此,目标应用程序可以是一个原生应用程序,而目标页面可以是原生应用程序的原生页面。
当初始应用程序发出调用目标应用程序的第一调用请求指令以后,应用程序框架将接收到来自初始应用程序的第一调用请求指令,并且需要对第一调用请求指令进行解析。例如,应用程序框架根据预设的规则对第一调用请求指令进行解析,如识别第一调用请求指令中的信息。通常,应用程序框架规定了应用程序向应用程序框架发送的指令的格式,因此,应用程序框架根据预设的格式可以对初始应用程序发送的第一调用请求指令进行解析,从而获取第一调用请求指令的信息。
步骤S103,获取第一调用请求指令中的第一调用信息。
本实施例中,初始应用程序向应用程序框架所发送的调用请求指令包括有目标应用程序的名称、类别等信息,还可以包括诸如调用的功能页面的名称等信息。因此,在步骤S102对第一调动请求指令进行解析后,可以从第一调用请求指令中获取上述的调用信息。
优选的,第一调用信息位于第一调用请求指令的预设位置,通过对第一调用请求指令进行解析以后,从预设的位置中获取第一调用信息。又或者,第一调用信息具有预设的标识信息,通过该标识信息来标识该确定第一调用信息的起止位置,从而获取第一调用信息。
步骤S104,判断调用的目标功能操作是否对应于原生应用程序,如是,执行步骤S105,否则,执行步骤S108。
由于初始应用程序可能调用应用程序框架下的另一个应用程序,也可能调用运行在操作系统下的原生应用程序,因此,需要确定当前调用的目标应用程序是原生应用程序还是应用程序框架下的应用程序。由于原生应用程序与应用程序框架下的应用程序具有不相同的名称,或者命名规则不相同,如包名的后缀不相同,或者原生应用程序的名称带有固定的标识符。因此,步骤S104根据第一调用信息中目标应用程序的名称或者标识符等,来确定调用的目标应用程序是否为一个原生应用程序。
具体的,应用程序框架记录操作系统当前安装的每一个原生应用程序的名称或者ID,且记录运行在应用程序框架上的每一个应用程序的名称或者标识信息。在获取第一调用信息后,对第一调用信息的目标应用程序的名称进行解析,判断目标应用程序的名称是否与其中一个原生应用程序的名称相同,或者与应用程序框架下的某一个应用程序的名称相匹配。如果第一调用信息中的目标应用程序名称与一个原生应用程序的名称相同,则可以确定当前调用的目标应用程序是一个原生应用程序,如果第一调用信息中的目标应用程序名称与运行在应用程序框架下的应用程序相匹配,则可以确定目标应用程序是一个运行在应用程序框架下的应用程序。
当然,如果调用的是一个功能页面,则第一调用信息中通常还包括功能页面的名称或者功能页面的ID等信息,如果该功能页面是应用程序框架下的应用程序的一个功能页面,通常包含有该功能页面的路径信息,例如该功能页面在哪一应用程序的哪一级文件下,因此,可以通过对功能页面的路径信息进行分析,从而确定调用的目标功能操作是否对应于一个原生应用程序。
步骤S105,将第一调用信息写入到第二格式的第二调用请求指令中。
应用程序框架在确定调用的目标功能操作是一个原生应用程序所实现的功能操作,则需要向操作系统的活动管理模块发送第二调用请求指令。由于第二调用请求指令是应用程序框架向操作系统的活动管理模块发送的指令,该指令的格式与第一调用请求指令的格式不相同,因此,应用程序框架需要以第二格式向活动管理模块发送第二调用请求指令。
由于第一调用请求指令包含有第一调用信息,例如目标应用程序的名称、类型或者目标页面的名称等信息,因此,在获取第一调用信息以后,需要将第一调用信息写入到第二调用请求指令中,也就是对第一调用信息进行封装,形成第二调用请求指令。
步骤S106,将第二调用请求指令发送至操作系统的活动管理模块。
按照第二格式生成第二调用请求指令以后,应用程序框架将第二调用请求指令发送至活动管理模块。由于应用程序框架被操作系统视为一个原生应用程序,因此,应用程序框架可以基于现有的通信机制向操作系统的活动管理模块发出第二调用请求指令,该调用请求指令中包含有需要调用的原生应用程序的名称、类型或者原生页面的名称等信息。当然,第二调用请求指令并不需要包含初始应用程序的名称等信息,也就是活动管理模块仅仅认为第二调用请求指令是由应用程序框架发出,调用目标应用程的主体是应用程序框架。
步骤S107,活动管理模块根据第二调用请求指令运行原生应用程序或者原生页面。
活动管理模块接收到第二调用请求指令以后,根据现有的原生应用程序调用规则进行分发、跳转,即获取第二调用请求指令中的第一调用信息,如获取调用的目标应用程序名称、类型等信息,然后调用运行目标应用程序的接口,由此运行目标应用程序。当然,如果调用的目标功能操作是目标应用程序的某一个功能页面,则直接跳转至该功能页面。
步骤S108,运行应用程序框架下的应用程序。
如果步骤S104确定第一调用请求指令所请求调用的目标应用程序不是原生应用程序,而是应用程序框架下的应用程序,则由应用程序框架对第一调用请求指令进行处理,如运行所调用的目标应用程序。
例如,获取第一调用信息中目标功能操作的信息,例如目标应用程序、目标功能页面的名称、类别或者目标功能页面的路径等。然后,遍历应用程序框架中的应用管理描述文件,查找出与调用请求指令中目标功能操作相匹配的信息。
优选的,应用程序框架的应用管理描述文件记录了应用程序框架下每一个应用程序的名称以及每一个应用程序的各个页面的路由信息,如目标页面在目标应用程序的哪一个文件夹中,从应用程序的配置文件的哪一个文件夹获取目标页面的描述信息等。因此,应用程序框架接收到第一调用信息以后,确定调用的目标应用程序是应用程序框架的应用程序,则遍历应用管理描述文件,查找与目标应用程序名称相同的应用程序。
如果仅仅依赖于应用程序或者功能页面的名称确定需要调用的目标应用程序、目标功能页面,则可能因为应用管理描述文件中存储有多个名称相同的应用程序而导致无法确定所需要调取的目标应用程序。因此,本实施例可以通过目标应用程序的名称以及类别来确定目标应用程序或者功能页面。例如,调用请求指令中包含的目标应用程序名称为A,且类别为工具类,则可以通过查找工具类的应用程序中名称为A的应用程序作为目标应用程序。
优选的,由于应用管理描述文件按照应用程序或者功能页面的类别对应用程序进行分类管理,因此,查找目标应用程序对应的调用信息时,首先获取调用请求指令中的目标应用程序或者功能页面的类别信息,根据类别信息获取该类别相应的链表,如工具类的链表、游戏类的链表或者浏览器类的链表等,优选的,每一个链表中包含至少一个应用程序或者功能页面的名称、类别或者其他的调用信息,然后根据调用请求指令中的功能操作的名称,即目标应用程序的名称或者目标功能页面的名称,从该链表中查找与名称相匹配的目标应用程序或者目标功能操作,这样可以快速的查找出调用请求指令对应目标应用程序或者功能页面。
进一步的,每一个应用程序或者功能页面都有自己唯一的ID,在确定目标应用程序以后,可以获取目标应用程序或者功能页面的ID,并且根据目标应用程序或者功能页面的ID确定的相关信息,例如目标功能页面的路径等。
当然,如果某一类别的应用程序或者功能页面包括多个同名的应用程序或者功能页面,则应用程序框架查找获得这多个同名的应用程序或者功能页面以后,将所查找获得的多个同名的应用程序或者功能页面的信息显示在屏幕上,由用户自行选择调用的是哪一个应用程序或者功能页面。
当然,如果第一调用信息包含有目标功能页面的路径,例如目标功能页面在哪一目标应用程序中哪一级目录下,在可以在确定目标功能页面所在的目标应用程序以后,运行目标应用程序时直接启动目标功能页面,从而实现对目标功能页面的调用。
本发明实施例还提供原生应用程序调用应用程序框架的应用程序的具体方法。参见图2,是原生应用程序调用应用程序框架的应用程序的流程。
首先执行步骤S201,接收调用目标功能操作的第三调用请求指令。
原生应用程序需要调用应用程序框架的某一个目标应用程序或者某一个目标页面时,首先由原生应用程序向操作系统的活动管理模块发送第三调用请求指令,第三调用请求指令中包含有第二调用信息,且第二调用信息中包括有声明信息,该声明信息是声明需要调用应用程序框架。由于应用程序框架被视为一个原生应用程序,因此,初始应用程序发出第三调用请求指令是,需要在第二调用信息中声明调用的原生应用程序是应用程序框架。此外,第二调用信息中还包括有需要调用的应用程序名称或者功能页面的名称、路径的。
优选的,应用程序框架的每一个应用程序的名称、类型以及应用程序的每一个页面的路径信息都记录在公开的开发者文档中,这样,原生应用程序的开发者需要设定原生应用程序调用某一应用程序或者功能页面时,可以从应用程序的开发者文档中获取应用程序的名称或者功能页面的名称、路径等信息,并且将这些信息记录在原生应用程序中,以便于原生应用程序在发送的第三调用请求指令中将需要调用的应用程序的名称等信息记录在第二调用信息中。
步骤S202,活动管理模块对第三调用请求指令进行解析。
活动管理模块接收到第三调用请求指令以后,根据预先的规则对第三调用请求指令进行解析,例如识别发送第三调用请求指令的原生应用程序的名称等。
步骤S203,获取第三调用请求指令中的第二调用信息。
活动管理模块对第三调用请求指令解析后,从第三调用请求指令中获取第二调用信息。优选的,第二调用信息具有特定的标识符或者设置在第三调用请求指令的特定位置,因此,通过识别特定的标识符或者从特定的存储位置中获取第二调用信息。
优选的,第二调用信息中包含有被调用的原生应用程序名称或者ID等标识信息,由于被调用的原生应用程序是应用程序框架,因此被调用的原生应用程序的标识信息为应用程序框架的标识信息。此外,第二调用信息还包括具体调用的应用程序框架下的目标应用程序或者目标页面的信息,如目标应用程序的名称、类型或者目标页面的名称、路径等信息,这些信息可以作为参数设置在第二调用信息中。
步骤S204,将第二调用信息写入第四调用请求指令中。
在活动管理模块获取第二调用信息以后,确定需要调用应用程序框架下的某一个应用程序或者某一页面时,需要向应用程序框架发送第四调用请求指令。因此,活动管理模块发送第四调用请求指令前,将第二调用信息写入到第四调用请求指令中,即将需要调用的目标应用程序的名称、类型或者需要调用的目标页面的名称、路径等信息写入到第四调用请求指令。
可选的,应用程序框架预先设定第四调用请求指令的格式,活动管理模块可以根据预先设定的格式形成第四调用请求指令,且第二调用信息设置在第四调用请求指令的预设位置。
步骤S205,将第四调用请求指令发送至应用程序框架。
活动管理模块生成第四调用请求指令以后,根据操作系统的分发规则向应用程序框架发送第四调用请求指令,由应用程序框架接收活动管理模块所发送的第四调用请求指令。应用程序框架接收到第四调用请求指令后,需要对第四调用请求指令进行解析,获取第二调用信息,即获取原生应用程序需要调用的目标应用程序或者目标功能页面。
步骤S206,判断调用的目标功能操作是否为允许原生应用程序调用的功能操作,如是,执行步骤S207,否则,执行步骤S208。
在获取第二调用信息以后,应用程序框架需要判断原生应用程序所调用的目标应用程序是否为允许原生应用程序所调用的应用程序。由于每一应用程序的配置文件中均包括有描述信息,该描述信息包括调用的声明,例如声明该应用程序是否允许被原生应用程序所调用,或者声明该应用程序的某一个页面是否允许被原生应用程序所调用。优选的,这些关于调用的声明信息被记录在应用程序框架的应用管理描述文件中。
因此,应用管理描述文件记录了应用程序框架每一个应用程序的名称以及目录结构,即记录每一个应用程序的每一个页面的层级结构,并且还记录每一个应用程序是否允许被原生应用程序调用或者某一个页面是否允许被原生应用程序调用的信息。
优选的,应用管理描述文件可以通过一个预设的标记来识别该应用程序或者功能页面是否允许被原生应用程序调用,例如在记录每一个应用程序或者功能页面的信息时,设置一个二进制数来对该应用程序或者功能页面进行标记,应用程序框架通过查看该标记来确定该应用程序或者功能页面是否允许被原生应用程序所调用。
步骤S207,运行目标应用程序或者目标应用程序的目标页面。
如果确定原生应用程序所调用的目标应用程序或者目标页面是允许原生应用程序调用的应用程序或者功能页面,则直接运行目标应用程序或者目标页面,例如对目标应用程序的配置文件进行解析,渲染生成目标应用程序的主页面。如果调用的是目标应用程序的某一个目标页面,则对目标应用程序的配置文件进行解析后,获取目标页面的描述信息,并且渲染生成目标页面。
优选的,渲染生成目标页面时,获取目标应用程序的配置文件中的组件,并且根据所获得的组件获取对应的原生控件,使用原生控件并且基于目标页面的描述信息渲染生成目标页面的原生页面。渲染生成原生页面的过程将结合图3详细描述。
步骤S208,屏蔽第四调用请求指令。
如果确认原生应用程序所调用的目标应用程序或者目标页面时不允许原生应用程序调用的应用程序或者页面时,屏蔽第四调用请求指令,也就是不执行第四调用请求指令。优选的,应用程序框架的应用管理描述文件可以向活动管理模块发送返回信息,以说明原生应用程序调用的目标应用程序或者目标页面不允许被调用。
需要说明的是,如果原生应用程序调用的目标应用程序是应用程序框架上并没有运行过的应用程序,例如目标应用程序的配置文件并没有被下载到终端设备的本地存储器上,则应用程序框架可以根据第二调用信息获取目标应用程序的名称,向云端服务器发送下载目标应用程序的配置文件的请求指令,从云端服务器下载目标应用程序的配置文件。由于第二调用信息中包括有目标应用程序的名称、类型或者ID等标识信息,因此,应用程序框架可以根据这些标识信息从云端服务器上获取目标应用程序的配置文件。应用程序框架获取目标应用程序的配置文件以后,可以对配置文件进行解析,例如获取主页面的描述信息,并且渲染生成主页面等。当然,如果原生应用程序调用的是目标应用程序的某一个目标页面,则应用程序框架获取配置文件以后,从配置文件中获取目标页面的描述信息,并且渲染生成目标页面。
如果应用程序框架向云端服务器发送下载目标应用程序的配置文件的请求指令以后,云端服务器并没有查找到匹配的应用程序的配置文件,则向终端设备反馈查找不到目标应用程序配置文件的反馈信息。此时,应用程序框架可以丢弃第四请求指令,或者向用户发出提示信息,表示无法执行调用,原因是无法查找到目标应用程序。优选的,应用程序框架向用户推荐功能相近似的若干个应用程序,例如与目标应用程序类型相同且功能近似的应用程序。
进一步的,应用程序框架首先从已经下载配置文件的应用程序中查找推荐的应用程序,如果已经下载的应用程序中没有合适的推荐应用程序,则从云端服务器中查找与目标应用程序类型相同且功能近似的应用程序作为推荐应用程序。当用户选择某一个推荐的应用程序以后,终端设备下载用户所选择的应用程序的配置文件,并且运行相应的应用程序。
下面结合图3介绍应用程序框架渲染生成目标应用程序的目标页面的过程。
首先执行步骤S301,获取目标应用程序的配置文件。
由于第二调用信息包括有目标应用程序的名称、类别或者目标页面的名称、路径等信息,这样,可以确定需要调用的目标应用程序,并且获取目标应用程序的配置文件。例如,应用程序框架记录了每一个应用程序的配置文件存储地址,因此可以从预设的存储地址中获取目标应用程序的配置文件。
然后,执行步骤S302,获取配置文件中的组件。
由于目标应用程序的配置文件中包含有多个组件、运行逻辑以及描述信息等,其中配置文件的组件是根据应用程序框架的要求预先设定的组件,且组件与终端设备的操作系统的原生控件存在对应关系,也就是通过该组件的标识可以确定该组件对应的操作系统原生控件的名称等。而配置文件的运行逻辑用于确定目标应用程序运行时的逻辑,例如页面之间的上下级关系,即从某一个页面进入下一级页面或者返回上一级页面的关系,并且指示页面上不同按键的作用,如点击某一按键后跳转至下一个页面的逻辑关系等。而描述信息则包含页面的布局信息、颜色、字体、资源、各种声明、调用信息等。
在获取目标应用程序的配置文件以后,应用程序框架对配置文件进行解析,如获取配置文件中的组件,并利用所获取的组件生成目标应用程序的原生页面,以便于用户浏览到目标应用程序的相关页面,并且在目标应用程序的页面上执行所需要的操作。
接着,执行步骤S303,根据所获取的组件确定对应的原生控件。
由于配置文件中的组件与终端设备的操作系统的原生控件存在对应关系,因此,步骤S303根据配置文件中组件与原生控件之间的对应关系,获取配置文件中的组件所对应的原生控件,即获取操作系统中用于生成图标、窗口或者导航栏等控件。
最后,执行步骤S304,应用所获取的原生控件生成目标应用程序或者目标功能页面的原生页面。
在步骤S303获取原生控件以后,使用所获取的原生控件渲染生成目标应用程序的原生页面。因此,本实施例中的原生页面是基于操作系统的原生控件所渲染形成的页面,这些页面的显示效果与传统的应用程序的页面显示效果相同,从而确保用户体验不会变化。
由于在渲染生成目标应用程序的页面时,通过获取目标应用程序的配置文件中的运行逻辑、描述信息,由于描述信息已经给出了页面上各种图标、文字的布局、样式等信息,因此,使用原生控件并且根据描述信息可以实现某一个页面的渲染。此外,通过运行逻辑可以实现多个页面之间的跳转关系的设定,从而生成应用程序的多个页面的逻辑。
当然,如果初始应用程序调用的是目标应用程序的某一个指定的页面,则调用请求指令中包含有该指定页面的信息,如指定页面的名称或者该指定页面的路径等,应用程序框架接收到调用信息以后,也是需要查找目标应用程序的配置文件,并且根据配置文件中的组件获取原生控件,使用原生控件来生成指定页面的原生页面。
本发明实施例还提供应用程序调用装置,如图4所示,应用程序调用装置包括第一调用请求指令接收模块401、第二调用请求指令发送模块402以及运行模块403。需要说明的是,本实施例的应用程序调用装置是运行在终端设备上的软件程序,并且用于实现上述的应用程序调用方法。并且,图4实施例的应用程序调用装置是用于实现应用程序框架下的应用程序调用原生应用程序的装置。
第一调用请求指令接收模块401用于接收应用程序框架下的应用程序所发送的调用目标功能操作的第一调用请求指令。优选的,第一调用请求指令为第一格式的调用请求指令,该格式能够被应用程序框架所识别,但不一定能够被操作系统的活动管理模块所识别。并且,第一调用请求指令中包含有第一调用信息,第一调用信息包括需要调用的原生应用程序的名称或者原生应用程序中某一个功能页面的名称、路径等信息。
第二调用请指令发送模块402用于根据第一调用请求指令,向操作系统的活动管理模块发送第二调用请求指令。优选的,第二调用请求指令发送模块402还有用于在应用程序框架接收到第一调用请求指令以后,对第一格式的第一调用请求指令进行解析,获取第一调用信息,并将第一调用信息写入到第二格式的第二调用请求指令中,再由应用程序框架将第二调用请求指令发送至操作系统的活动管理模块。
运行模块403用于根据第二调用请求指令确定调用的原生应用程序,并且运行该目标功能操作对应的原生应用程序或者原生页面。优选的,活动管理模块根据第一调用信息中目标应用程序的名称或者目标页面的名称等信息,从应用程序列表中查找出该目标应用程序调用接口,并且通过该接口运行目标应用程序或者目标页面。
另外,本发明还提供原生应用程序调用应用程序框架的应用程序的应用程序调用装置,参见图5,本实施例的应用程序调用装置包括第三调用请求指令接收模块501、第四调用请求指令发送模块502、判断模块503以及运行模块504。
第一调用请求指令接收模块501用于接收初始应用程序发出的请求调用目标应用程序的调用请求指令。例如,作为初始应用程序的原生应用程序在运行过程中,需要调用应用程序框架的中的某一个应用程序或者功能页面,向操作系统的活动管理模块发送第三调用请求指令,第三调用请求指令中包含有第二调用信息,第二调用信息包括需要代用应用程序框架的信息,还包括需要调用的目标应用程序的名称、类别或者目标功能页面的名称、路径等。
第四调用请求指令发送模块502用于对第三调用请求指令进行解析,获取第二调用信息,并且将第二调用信息写入到第四调用请求指令中,然后由活动管理模块向应用程序框架发送第四调用请求指令。
判断模块503用于由应用程序框架接收第四调用请求指令,并且获取第二调用信息,获取需要调用的目标应用程序或者目标页面。然后,从应用管理描述文件查找目标应用程序或者目标页面的信息,判断所需要调用的目标应用程序是否为允许原生应用程序调用的应用程序,或者判断需要调用的目标页面是否为允许原生应用程序调用的功能页面。
运行模块504用于在确认原生应用程序所调用的目标应用程序是允许原生应用程序调用的应用程序时,运行该应用程序,或者确认原生应用程序所调用的目标页面是允许原生应用程序调用的功能页面时,运行该目标页面。
当然,如果确认原生应用程序所调用的目标应用程序或者目标页面是不允许原生应用程序调用的应用程序或者功能页面时,则屏蔽第四调用请求指令,也就是不执行第四调用请求指令。可选的,在屏蔽第四调用请求指令以后,向活动管理模块返回调用错误的信息,并且说明调用错误的原因,即原生应用程序所调用的目标应用程序或者目标页面是不允许原生应用程序调用的应用程序或者功能页面。
可见,本发明提供了一套实现应用程序框架的应用程序与原生应用程序之间的相互调用机制,例如由运行在应用程序框架的初始应用程序向应用程序框架发送调用原生应用程序的第一调用请求指令,进而由应用程序框架向操作系统的活动管理模块发送第二调用请求指令,实现对原生应用程序的调用。
如果原生应用程序需要调用应用程序框架下的应用程序时,则由初始应用程序向活动管理模块发送第三调用请求指令,由活动管理模块向应用程序框架发送第四调用请求指令,再由应用程序框架执行对目标应用程序或者目标页面的调用。
本发明实施例还提供了一种终端设备,如图6所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(英文全称:Personal Digital Assistant,英文缩写:PDA)等任意终端设备。
参考图6,终端设备包括有处理器601、存储器602、电源603以及存储在存储器中并可在处理器上运行的计算机程序。其中,处理器601执行计算机程序时实现上述各个信息处理方法实施例中的步骤,例如图1所示的步骤S101至S108等。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
示例性的,计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本发明。上述的一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
本领域技术人员可以理解,图6中示出的结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,例如上述的终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SmartMedia Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
当然,上述的方案只是本发明优选的实施方案,实际应用是还可以有更多的变化,例如,调用信息具体内容的改变、渲染生成目标应用程序页面的具体步骤的改变,这样的改变并不影响本发明的实施,也应该包括在本发明的保护范围内。
Claims (10)
1.一种应用程序调用方法,应用于终端设备,其特征在于,该方法包括:
接收调用目标功能操作的第一调用请求指令;
根据所述第一调用请求指令,向操作系统的活动管理模块发送第二调用请求指令;
根据所述第二调用请求指令确定调用的原生应用程序,运行所述目标功能操作对应的原生应用程序或者原生页面。
2.根据权利要求1所述的应用程序调用方法,其特征在于,根据所述第一调用请求指令,向操作系统的活动管理模块发送第二调用请求指令包括:
对第一格式的所述第一调用请求指令进行解析,获取所述第一调用指令中的第一调用信息,将所述第一调用信息写入第二格式的第二调用请求指令中,将所述第二调用请求指令发送至所述活动管理模块。
3.根据权利要求2所述的应用程序调用方法,其特征在于,向所述活动管理模块发送第二调用请求指令前,还执行:
根据所述第一调用信息,确定所述第一调用指令所调用的所述目标功能操作对应于原生应用程序。
4.一种应用程序调用方法,应用于终端设备,其特征在于,该方法包括:
接收调用目标功能操作的第三调用请求指令;
根据所述第三调用请求指令,向应用程序框架发送第四调用请求指令;
根据所述第四调用请求指令确定调用的目标应用程序,运行所述目标功能操作对应的所述目标应用程序或者目标页面。
5.根据权利要求4所述的应用程序调用方法,其特征在于,根据所述第三调用请求指令,向应用程序框架发送第四调用请求指令包括:
对所述第三调用请求指令进行解析,获取所述第三调用指令中的第二调用信息,将所述第二调用信息写入第四调用请求指令中,将所述第四调用请求指令发送至所述应用程序框架。
6.根据权利要求5所述的应用程序调用方法,其特征在于,获取所述第三调用指令中的第二调用信息包括:根据所述第三调用指令获取调用的目标应用程序名称和/或目标页面的路径。
7.根据权利要求4至6任一项所述的应用程序调用方法,其特征在于,运行所述目标功能操作对应的所述目标应用程序或者目标页面前,还执行:
在应用程序框架的应用管理描述文件中查找所述目标应用程序或者所述目标页面,并确认所述目标应用程序或者所述目标页面允许被原生应用程序所调用。
8.根据权利要求4至6任一项所述的应用程序调用方法,其特征在于,运行所述目标功能操作对应的所述目标应用程序或者目标页面包括:判断所述目标功能操作对应的目标应用程序的配置文件是否已经下载,如确定所述目标应用程序的配置文件未下载,则下载所述目标应用程序的配置文件,对所述配置文件进行解析并运行所述目标应用程序或者所述目标页面。
9.一种终端设备,其特征在于,所述终端设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1至7中任意一项所述应用程序调用方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述应用程序调用方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810727750.7A CN110688232B (zh) | 2018-07-05 | 2018-07-05 | 应用程序调用方法、终端设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810727750.7A CN110688232B (zh) | 2018-07-05 | 2018-07-05 | 应用程序调用方法、终端设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110688232A true CN110688232A (zh) | 2020-01-14 |
CN110688232B CN110688232B (zh) | 2023-07-07 |
Family
ID=69106686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810727750.7A Active CN110688232B (zh) | 2018-07-05 | 2018-07-05 | 应用程序调用方法、终端设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110688232B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666165A (zh) * | 2020-05-29 | 2020-09-15 | 深圳Tcl新技术有限公司 | 应用间功能调用的方法、装置、设备及存储介质 |
CN112000949A (zh) * | 2020-08-26 | 2020-11-27 | 中国联合网络通信集团有限公司 | 程序包调用方法、系统、终端设备及计算机可读存储介质 |
CN112100561A (zh) * | 2020-11-03 | 2020-12-18 | 南京研利科技有限公司 | 用于网页调用本地功能的方法、电子设备和存储介质 |
CN112256564A (zh) * | 2020-09-23 | 2021-01-22 | 北京达佳互联信息技术有限公司 | 应用程序的运行方法、装置及电子设备 |
CN112363888A (zh) * | 2020-11-13 | 2021-02-12 | 广州朗国电子科技有限公司 | 一种多应用协同工作方法、装置、系统及计算机可读存储介质 |
CN112698932A (zh) * | 2021-03-23 | 2021-04-23 | 中国信息通信研究院 | 工业应用程序调用方法、装置、计算机设备和存储介质 |
CN112783978A (zh) * | 2021-01-28 | 2021-05-11 | 北京东方优播网络科技有限公司 | 数据传输方法、装置、计算机系统和存储介质 |
CN113076147A (zh) * | 2021-03-09 | 2021-07-06 | 北京一亩田新农网络科技有限公司 | 动态apk的资源加载方法、装置、系统以及介质 |
CN114356452A (zh) * | 2021-12-31 | 2022-04-15 | 必要鸿源(北京)科技有限公司 | 定位结果信息的获取方法、装置、电子设备及存储介质 |
CN114979300A (zh) * | 2022-07-05 | 2022-08-30 | 北京一点数娱科技有限公司 | 一种客户端的多种服务通信方法及装置 |
CN116560879A (zh) * | 2023-07-10 | 2023-08-08 | 深圳市慧为智能科技股份有限公司 | 人脸识别服务的调用方法、装置、终端设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104903863A (zh) * | 2012-12-14 | 2015-09-09 | 微软技术许可有限责任公司 | 用于虚拟环境的控制反转组件服务模型 |
CN105718313A (zh) * | 2016-01-22 | 2016-06-29 | 北京京东尚科信息技术有限公司 | 应用操作方法和装置 |
CN107291352A (zh) * | 2017-06-20 | 2017-10-24 | 广州阿里巴巴文学信息技术有限公司 | 一种文字阅读中应用程序跳转的方法及其装置 |
CN107329743A (zh) * | 2017-06-14 | 2017-11-07 | 北京小米移动软件有限公司 | 应用页面的展示方法、装置及存储介质 |
-
2018
- 2018-07-05 CN CN201810727750.7A patent/CN110688232B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104903863A (zh) * | 2012-12-14 | 2015-09-09 | 微软技术许可有限责任公司 | 用于虚拟环境的控制反转组件服务模型 |
CN105718313A (zh) * | 2016-01-22 | 2016-06-29 | 北京京东尚科信息技术有限公司 | 应用操作方法和装置 |
CN107329743A (zh) * | 2017-06-14 | 2017-11-07 | 北京小米移动软件有限公司 | 应用页面的展示方法、装置及存储介质 |
CN107291352A (zh) * | 2017-06-20 | 2017-10-24 | 广州阿里巴巴文学信息技术有限公司 | 一种文字阅读中应用程序跳转的方法及其装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666165A (zh) * | 2020-05-29 | 2020-09-15 | 深圳Tcl新技术有限公司 | 应用间功能调用的方法、装置、设备及存储介质 |
CN112000949A (zh) * | 2020-08-26 | 2020-11-27 | 中国联合网络通信集团有限公司 | 程序包调用方法、系统、终端设备及计算机可读存储介质 |
CN112000949B (zh) * | 2020-08-26 | 2023-06-16 | 中国联合网络通信集团有限公司 | 程序包调用方法、系统、终端设备及计算机可读存储介质 |
CN112256564A (zh) * | 2020-09-23 | 2021-01-22 | 北京达佳互联信息技术有限公司 | 应用程序的运行方法、装置及电子设备 |
CN112100561A (zh) * | 2020-11-03 | 2020-12-18 | 南京研利科技有限公司 | 用于网页调用本地功能的方法、电子设备和存储介质 |
CN112363888A (zh) * | 2020-11-13 | 2021-02-12 | 广州朗国电子科技有限公司 | 一种多应用协同工作方法、装置、系统及计算机可读存储介质 |
CN112783978A (zh) * | 2021-01-28 | 2021-05-11 | 北京东方优播网络科技有限公司 | 数据传输方法、装置、计算机系统和存储介质 |
CN113076147A (zh) * | 2021-03-09 | 2021-07-06 | 北京一亩田新农网络科技有限公司 | 动态apk的资源加载方法、装置、系统以及介质 |
CN113076147B (zh) * | 2021-03-09 | 2024-02-02 | 北京一亩田新农网络科技有限公司 | 动态apk的资源加载方法、装置、系统以及介质 |
CN112698932A (zh) * | 2021-03-23 | 2021-04-23 | 中国信息通信研究院 | 工业应用程序调用方法、装置、计算机设备和存储介质 |
CN114356452A (zh) * | 2021-12-31 | 2022-04-15 | 必要鸿源(北京)科技有限公司 | 定位结果信息的获取方法、装置、电子设备及存储介质 |
CN114356452B (zh) * | 2021-12-31 | 2024-03-19 | 必要鸿源(北京)科技有限公司 | 定位结果信息的获取方法、装置、电子设备及存储介质 |
CN114979300A (zh) * | 2022-07-05 | 2022-08-30 | 北京一点数娱科技有限公司 | 一种客户端的多种服务通信方法及装置 |
CN116560879A (zh) * | 2023-07-10 | 2023-08-08 | 深圳市慧为智能科技股份有限公司 | 人脸识别服务的调用方法、装置、终端设备及存储介质 |
CN116560879B (zh) * | 2023-07-10 | 2024-04-09 | 深圳市慧为智能科技股份有限公司 | 人脸识别服务的调用方法、装置、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110688232B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110688232B (zh) | 应用程序调用方法、终端设备及计算机可读存储介质 | |
CN109391676B (zh) | 终端设备控制方法、终端设备及计算机可读存储介质 | |
CN106980504B (zh) | 一种应用程序开发方法及其工具、设备 | |
CN110727469B (zh) | 终端设备控制方法及装置、应用程序配置文件的封装方法、终端设备及计算机可读存储介质 | |
CN109508198A (zh) | 应用程序安装方法、装置、存储介质及终端 | |
US8990929B2 (en) | Auditing application activities | |
CN106406956B (zh) | 应用程序的安装方法及装置 | |
JP7106001B2 (ja) | サブアプリケーション開発方法、装置、コンピュータ機器、並びにコンピュータプログラム | |
CN110941779B (zh) | 加载页面的方法、装置、存储介质及电子设备 | |
CN110543327A (zh) | 业务组件复用方法、装置、计算机设备及存储介质 | |
CN106681749A (zh) | 基于安卓平台的局部代码补丁更新方法及装置 | |
CN111443903A (zh) | 软件开发文件获取方法及装置、电子设备、存储介质 | |
US20200057779A1 (en) | Electronic device and digital content managing method | |
CN111385661A (zh) | 语音控制全屏播放的方法及终端 | |
CN114356290A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN114356330A (zh) | 页面配置方法、装置、电子设备和存储介质 | |
CN111026466A (zh) | 文件处理方法、装置、计算机可读存储介质及电子设备 | |
CN110609751B (zh) | 一种终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN110309000B (zh) | 应用更新提示方法及终端设备 | |
CN109725799B (zh) | 一种广告显示的控制方法、装置及智能终端 | |
CN110618874B (zh) | 一种终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CA2595661C (en) | Auditing software application activities | |
CN111488286A (zh) | 一种Android模块独立开发的方法及装置 | |
CN115269058B (zh) | 一种wpf资源加载方法及装置 | |
CN112988592B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |