本发明涉及终端技术领域,具体涉及一种应用界面的启动方法及装置。
背景技术:
随着智能终端的发展,智能终端能够兼容的功能越来越多,不仅丰富用户生活,还给用户带来便利。随着移动终端设备已日益融入人们生活、应用功能日趋完善,给用户带来了极大便利以及提高用户体验。
为了实现各种功能以满足用户的各种需求,通常智能终端会安装各种各样的应用程序(可以简称为应用)。这些应用程序在运行时,通常会启动一个或多个应用界面(即用户可见的程序界面)。
然而,有时候应用程序启动的应用界面是非必要的。例如,应用程序在后台运行时启动的弹出界面(例如,广告界面)会在前台显示,对正在前台运行的应用程序的正常运行造成干扰;又例如,运行中的应用程序通过应用程序之间的互相唤醒启动其它应用程序的应用界面(例如,支付软件的支付界面),可能会引起用户的误操作而造成不必要的损失。
由此可知,应用程序启动的非必要应用界面有可能会造成前台运行的应用程序的中断或崩溃,甚至引起用户的误操作而造成不必要的损失,因此现有技术中的应用界面启动方法安全性低,有待进一步的改进。
技术实现要素:
本发明实施例提供一种应用界面的启动方法及装置,能够提高应用界面启动的安全性。
本发明实施例提供一种应用界面的启动方法,包括:
接收应用界面的启动请求;
判断发起所述启动请求的源应用程序是否是在前台运行的应用程序;
若判断为所述源应用程序是在前台运行的应用程序,则进一步判断所述应用界面是否属于所述源应用程序;
若判断为所述应用界面属于所述源应用程序,则启动所述应用界面。
进一步地,所述判断发起所述启动请求的源应用程序是否是在前台运行的应用程序的步骤具体包括:
获取发起所述启动请求的源应用程序的应用标识;
获取在前台运行的应用程序的应用标识,以得到应用标识集合;
判断所述应用标识集合中是否存在与所述源应用程序的应用标识相同的应用标识;
若是,则判定发起所述启动请求的源应用程序是在前台运行的应用程序。
进一步地,所述判断所述应用界面是否属于所述源应用程序的步骤具体包括:
判断所述源应用程序的应用标识是否为目标应用标识,所述目标应用标识为所述应用界面所属的应用程序的应用标识;
若是,则判定所述应用界面属于所述源应用程序。
进一步地,所述启动请求携带与所述应用界面对应的组件标识,所述启动所述应用界面的步骤具体包括:
根据所述组件标识确定相应的目标组件;
根据所述目标组件创建对应的应用界面。
进一步地,所述启动方法还包括:
若判断为发起所述启动请求的源应用程序不是在前台运行的应用程序或判断为所述应用界面不属于所述源应用程序,则进一步判断所述源应用程序是否要求返回所述启动请求的执行结果;
若判断为所述源应用程序要求返回所述启动请求的执行结果,则向所述源应用程序发送所述启动请求被拒绝的信息。
进一步地,所述启动方法还包括:
若判断为发起所述启动请求的源应用程序不是在前台运行的应用程序或判断为所述应用界面不属于所述源应用程序,则向终端系统发送所述启动请求被拒绝的信息,并将所述信息添加到所述终端系统的日志文件中。
相应的,本发明实施例还提供一种应用界面的启动装置,包括:
接收模块,用于接收应用界面的启动请求;
第一判断模块,用于判断发起所述启动请求的源应用程序是否是在前台运行的应用程序;
第二判断模块,用于在所述第一判断模块判断为是时,进一步判断所述应用界面是否属于所述源应用程序;
执行模块,用于在所述第二判断模块判断为是时,启动所述应用界面。
进一步地,所述第一判断模块具体包括:
第一获取子模块,用于获取发送所述启动请求的源应用程序的应用标识;
第二获取子模块,用于获取在前台运行的应用程序的应用标识,以得到应用标识集合;
判断子模块,用于判断所述应用标识集合中是否存在与所述源应用程序的应用标识相同的应用标识;若是,则判定发起所述启动请求的源应用程序是在前台运行的应用程序。
进一步地,所述第二判断模块具体用于:
判断所述源应用程序的应用标识是否为目标应用标识,所述目标应用标识为所述应用界面所属的应用程序的应用标识;若是,则判定所述应用界面属于所述源应用程序。
进一步地,所述启动请求携带与所述应用界面对应的组件标识,所述执行模块具体包括:
确定子模块,用于根据所述组件标识确定相应的目标组件;
创建子模块,用于根据所述目标组件创建对应的应用界面。
本发明实施例采用接收应用界面的启动请求,判断发起该启动请求的源应用程序是否是在前台运行的应用程序,若该源应用程序是在前台运行的应用程序,则进一步判断该应用界面是否属于该源应用程序,若该应用界面属于该源应用程序,则启动该应用界面;该方案首先判断源应用程序是否是在前台运行的应用程序,然后进一步判断该应用界面是否属于该源应用程序,只有在前台运行的应用程序请求启动自身的应用界面时,才启动该应用界面,相对于现有技术而言,该方案只允许前台运行的应用程序启动自身的应用界面,而不允许后台运行的应用程序启动应用界面,也不允许前台运行的应用程序启动其它应用程序的应用界面,提高了应用界面启动的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的应用界面的启动方法的流程示意图;
图2是本发明实施例二提供的应用界面的启动方法的流程示意图;
图3a是本发明实施例三提供的第一种应用界面的启动装置的结构示意图;
图3b是本发明实施例三提供的第二种应用界面的启动装置的结构示意图;
图3c是本发明实施例三提供的第三种应用界面的启动装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种应用界面的启动方法及装置,以下将分别进行详细说明。
实施例一
本实施例将从应用界面的启动装置的角度进行描述,该装置具体可以集成在终端中,该终端可以是智能手机、平板电脑等设备。
一种应用界面的启动方法,包括:接收应用界面的启动请求,判断发起该启动请求的源应用程序是否是在前台运行的应用程序,若判断为该源应用程序是在前台运行的应用程序,则进一步判断该应用界面是否属于该源应用程序,若判断为该应用界面属于该源应用程序,则启动该应用界面。
如图1所示,该应用界面的启动方法,具体流程可以如下:
S101,接收应用界面的启动请求。
具体地,在终端的操作系统(例如,Android系统)中,任何一个应用程序的应用界面的启动,都必须启动一个对应的Activity组件(界面组件,Android系统中最重要的四大组件之一),这个Activity组件在被创建的时候,根据自身的界面来布局文件,生成相应的应用界面,然后通过系统的窗口管理服务显示出来,呈现给用户。而在操作系统中,启动应用界面对应的Activity组件都有一个统一的程序入口,即为活动管理服务(ActivityManagerService)中的startActivity函数(界面启动函数)。任何应用程序想要启动一个应用界面,都必须向系统发送启动应用界面的请求,以调用系统中的startActivity函数来启动对应的Activity组件。应用程序通过startActivity函数来启动的应用界面可以是该应用程序自身的界面,也可以是其它应用程序的界面。
实际应用中,应用程序向操作系统发送应用界面的启动请求的方式有多种,例如,用户点击某个应用程序主界面上的按钮(该按钮的功能是用来启动该应用程序的另外一个界面),该应用程序随即向系统发起应用界面的启动请求以响应用户的操作;再例如,某个应用程序被设置了定时启动,当到达该定时启动的时间点时,该应用程序自动向系统发起应用界面的启动请求,以启动该应用程序。应用程序发起应用界面的启动请求后,终端接收该启动请求,并对该启动请求进行处理。
S102,判断发起该启动请求的源应用程序是否是在前台运行的应用程序。
具体应用中,为了防止后台运行的应用程序调用系统中的startActivity函数来创建应用界面(例如,广告界面)从而对用户造成影响,需要对发起应用界面的启动请求的应用程序是否在前台运行进行判断,具体判断过程可以包括以下步骤:
获取发起该启动请求的源应用程序的应用标识;
获取在前台运行的应用程序的应用标识,以得到应用标识集合;
判断该应用标识集合中是否存在与该源应用程序的应用标识相同的应用标识。
具体地,应用程序向终端系统发起应用界面的启动请求以调用系统中的startActivity函数时,该启动请求中包括该startActivity函数所需的参数,例如,该启动请求的发起者(即发起该启动请求的源应用程序)、该应用界面的所属者(即该应用界面所属的目标应用程序),终端系统可以通过这些参数来获取到发起该启动请求的源应用程序的应用标识,该应用标识可以是该应用程序安装在系统中的程序包名(例如,微信应用程序安装在系统中的程序包名为com.tencent.mm),该应用标识还可以是代表着该应用程序身份的其它标识。
随后,终端系统获取在前台运行的应用程序的应用标识。具体地,在终端前台运行的应用程序可以是一个或者多个(例如,当终端可以分屏显示的时候,可以同时存在多个在前台运行的应用程序),终端可以通过活动管理服务(ActivityManagerService)来获取到在前台运行的应用程序的应用标识,该应用标识的类型与获取到的源应用程序的应用标识的类型相同,当有多个应用程序同时在前台运行时,该多个应用程序的应用标识组成应用标识集合。
随后,终端系统判断在该应用标识集合中是否存在与该源应用程序的应用标识相同的应用标识。具体地,终端系统可以将源应用程序的应用标识与该应用标识集合中的应用标识逐个进行比较来进行判断。当该应用标识集合中存在与源应用程序的应用标识相同的应用标识时,即可判断为发起该启动请求的源应用程序是在前台运行的应用程序,随后执行步骤S103。
S103,判断该应用界面是否属于该源应用程序。
本领域技术人员可以理解,应用界面是应用程序中的一个组件。具体应用中,为了防止应用程序启动其它应用程序的应用界面从而对用户造成影响,需要判断被请求启动的应用界面是否属于该源应用程序。实现该判断的方法有多种,例如,可以通过以下步骤来进行判断:
判断该源应用程序的应用标识是否为目标应用标识,该目标应用标识为该应用界面所属的应用程序的应用标识。
具体地,终端系统可以通过接收到的启动请求中所携带的参数来获取到该应用界面所属的应用程序,即目标应用程序,同时获取到该目标应用程序的应用标识,该应用标识的类型与获取到的源应用程序的应用标识的类型相同,所获取到的目标应用程序的应用标识即为目标应用标识。
随后,终端系统将获取到的目标应用标识与上述获取到的源应用程序的应用标识进行比较,判断两者是否相同。若两者相同,则源应用程序的应用标识即为目标应用标识,此时可判定为被请求启动的应用界面属于该源应用程序,随后执行步骤S104。
S104,启动该应用界面。
具体地,当判断为被请求启动的应用界面属于源应用程序时,终端系统根据该启动请求来启动相应的应用界面。启动该应用界面具体可以包括以下步骤:
根据该启动请求携带的与该应用界面对应的组件标识确定相应的目标组件;
根据该目标组件创建对应的应用界面。
具体地,源应用程序发起的启动请求所携带的参数中包括被请求启动的应用界面的组件标识,终端系统根据接收到的启动请求中的参数获取到应用界面的组件标识,然后根据该组件标识确定目标组件,并调用系统中的startActivity函数来启动目标组件,以创建与该目标组件对应的应用界面。
优选地,在步骤S102中判断为发起该启动请求的源应用程序不是在前台运行的应用程序,或者在步骤S103中判断为该应用界面不属于该源应用程序时,终端系统拒绝启动该应用界面,即拒绝该启动请求,此时该应用界面的启动方法还可以包括以下步骤:
判断该源应用程序是否要求返回该启动请求的执行结果;
若是,则向该源应用程序发送该启动请求被拒绝的信息。
具体地,源应用程序发起的启动请求中可以包括是否需要返回执行结果的信息,例如,在启动请求中设置标志位,标志位为1表示需要返回执行结果,标志位为0表示不需要返回执行结果,终端系统可以通过接收到的启动请求中的标志位来判断源应用程序是否要求返回该启动请求的执行结果。
当判断为源应用程序要求返回该启动请求的执行结果时,向源应用程序发送该启动请求被拒绝的信息,以使源应用程序获知该启动请求的执行结果,从而避免该源应用程序由于持续等待所请求的应用界面的启动而造成应用程序阻塞。
优选地,在步骤S102中判断为发起该启动请求的源应用程序不是在前台运行的应用程序,或者在步骤S103中判断为该应用界面不属于该源应用程序时,终端系统拒绝启动该应用界面,即拒绝该启动请求,此时该应用界面的启动方法还可以包括以下步骤:
向终端系统发送该启动请求被拒绝的信息,并将该信息添加到该终端系统的日志文件中。
具体地,拒绝该启动请求后,可以将该启动请求被拒绝的信息上报到终端系统,并将该信息添加到终端系统的日志文件中,该信息可以包括该启动请求被拒绝的原因以及该启动请求被拒绝的时间等信息。
由上可知,本发明实施例提供的应用界面的启动方法,采用接收应用界面的启动请求,判断发起该启动请求的源应用程序是否是在前台运行的应用程序,若该源应用程序是在前台运行的应用程序,则进一步判断该应用界面是否属于该源应用程序,若该应用界面属于该源应用程序,则启动该应用界面;该方案首先判断源应用程序是否是在前台运行的应用程序,然后进一步判断该应用界面是否属于该源应用程序,只有在前台运行的应用程序请求启动自身的应用界面时,才启动该应用界面,相对于现有技术而言,该方案只允许前台运行的应用程序启动自身的应用界面,而不允许后台运行的应用程序启动应用界面,也不允许前台运行的应用程序启动其它应用程序的应用界面,提高了应用界面启动的安全性。
实施例二
根据实施例一所描述的应用界面的启动方法,以下将举例作进一步详细说明。
在本实施例中,将以应用界面的启动装置具体集成在智能手机中,以智能手机中应用界面的启动方法为例进行详细描述。
如图2所示,该应用界面的启动方法,具体流程可以如下:
S201,接收应用界面的启动请求。
具体地,智能手机接收应用界面的启动请求的方式有多种,例如,用户点击某个应用程序主界面上的按钮(该按钮的功能是用来启动该应用程序的另外一个界面),该应用程序随即向系统发起应用界面的启动请求以响应用户的操作,随后智能手机接收该启动请求;再例如,某个应用程序被设置了定时启动,当到达该定时启动的时间点时,该应用程序自动向系统发起应用界面的启动请求,以启动该应用程序,随后智能手机接收该启动请求。
S202,获取发起该启动请求的源应用程序的应用标识。
具体地,应用程序向智能手机系统发起应用界面的启动请求以调用系统中的startActivity函数时,该启动请求中包括该startActivity函数所需的参数,例如,该启动请求的发起者(即发起该启动请求的源应用程序)、该应用界面的所属者(即该应用界面所属的目标应用程序),智能手机系统可以通过这些参数来获取到发起该启动请求的源应用程序的应用标识,该应用标识可以是该应用程序安装在系统中的程序包名(例如,微信应用程序安装在系统中的程序包名为com.tencent.mm)。
S203,获取在前台运行的应用程序的应用标识,以得到应用标识集合。
具体地,在智能手机前台运行的应用程序可以是一个或者多个,可以通过活动管理服务(ActivityManagerService)来获取到在前台运行的应用程序的应用标识,该应用标识的类型与获取到的源应用程序的应用标识的类型相同,当有多个应用程序同时在前台运行时,该多个应用程序的应用标识组成应用标识集合。
S204,判断该应用标识集合中是否存在与该源应用程序的应用标识相同的应用标识。
具体地,智能手机系统可以将源应用程序的应用标识与该应用标识集合中的应用标识逐个进行比较来进行判断,当该源应用程序的应用标识与该应用标识集合中的某个应用标识相同时,可判断为该应用标识集合中存在与该源应用程序的应用标识相同的应用标识,随后执行步骤S205;当该源应用程序的应用标识与该应用标识集合中的所有应用标识都不相同时,判断为该应用标识集合中不存在与该源应用程序的应用标识相同的应用标识,随后执行步骤S208。
S205,判断该源应用程序的应用标识是否为目标应用标识,该目标应用标识为该应用界面所属的应用程序的应用标识。
具体地,智能手机系统可以通过接收到的启动请求中所携带的参数来获取到该应用界面所属的应用程序,即目标应用程序,同时获取到该目标应用程序的应用标识,该应用标识的类型与获取到的源应用程序的应用标识的类型相同,所获取到的目标应用程序的应用标识即为目标应用标识。
随后,智能手机系统将获取到的目标应用标识与上述获取到的源应用程序的应用标识进行比较,判断两者是否相同。若两者相同,则判断为源应用程序的应用标识即为目标应用标识,随后执行步骤S206;若两者不相同,则判断为源应用程序的应用标识不是目标应用标识,随后执行步骤S208。
S206,根据该启动请求携带的与该应用界面对应的组件标识确定相应的目标组件。
具体地,源应用程序发起的启动请求所携带的参数中包括被请求启动的应用界面的组件标识,智能手机系统根据接收到的启动请求中的参数获取到应用界面的组件标识,然后根据该组件标识确定目标组件。
S207,根据该目标组件创建对应的应用界面。
具体地,确定目标组件后,调用系统中的startActivity函数来启动目标组件,以创建与该目标组件对应的应用界面。
S208,判断该源应用程序是否要求返回该启动请求的执行结果。
具体地,源应用程序发起的启动请求中可以包括是否需要返回执行结果的信息,例如,在启动请求中设置标志位,标志位为1表示需要返回执行结果,标志位为0表示不需要返回执行结果,智能手机系统可以通过接收到的启动请求中的标志位来判断源应用程序是否要求返回该启动请求的执行结果,若判断为需要返回执行结果,则执行步骤S209。
S209,向该源应用程序发送该启动请求被拒绝的信息。
当判断为源应用程序要求返回该启动请求的执行结果时,向源应用程序发送该启动请求被拒绝的信息,以使源应用程序获知该启动请求的执行结果,从而避免该源应用程序由于持续等待所请求的应用界面的启动而造成应用程序阻塞。
由上可知,本发明实施例提供的应用界面的启动方法,采用接收应用界面的启动请求,获取发起该启动请求的源应用程序的应用标识,并获取在前台运行的应用程序的应用标识,以得到应用标识集合,判断该应用标识集合中是否存在与该源应用程序的应用标识相同的应用标识,若该应用标识集合中存在与该源应用程序的应用标识相同的应用标识,则继续判断该源应用程序的应用标识是否为目标应用标识,若该源应用程序的应用标识是目标应用标识,则根据该启动请求携带的与该应用界面对应的组件标识确定相应的目标组件,并根据该目标组件创建对应的应用界面,若该应用标识集合中不存在与该源应用程序的应用标识相同的应用标识或者该源应用程序的应用标识不是目标应用标识,则继续判断该源应用程序是否要求返回该启动请求的执行结果,若是则向该源应用程序发送该启动请求被拒绝的信息;该方案在应用标识集合中存在与该源应用程序的应用标识相同的应用标识、并且该源应用程序的应用标识是目标应用标识时,创建对应的应用界面,在应用标识集合中不存在与该源应用程序的应用标识相同的应用标识或者该源应用程序的应用标识不是目标应用标识、并且该源应用程序要求返回该启动请求的执行结果时,向该源应用程序发送该启动请求被拒绝的信息,相对于现有技术而言,该方案只允许前台运行的应用程序启动自身的应用界面,而不允许后台运行的应用程序启动应用界面,也不允许前台运行的应用程序启动其它应用程序的应用界面,并且在拒绝应用界面的启动请求后可以向源应用程序发送该启动请求被拒绝的信息,提高了应用界面启动的安全性。
实施例三
为了更好地实施以上方法,本发明实施例还提供一种应用界面的启动装置,该应用界面的启动装置可以集成在终端中,该终端可以是智能手机、平板电脑等设备。
如图3a所示,该应用界面的启动装置可以包括:接收模块301、第一判断模块302、第二判断模块303、执行模块304,具体描述如下:
该接收模块301,用于接收应用界面的启动请求;
该第一判断模块302,用于判断发起该启动请求的源应用程序是否是在前台运行的应用程序;
该第二判断模块303,用于在该第一判断模块302判断为是时,进一步判断该应用界面是否属于该源应用程序;
该执行模块304,用于在该第二判断模块303判断为是时,启动该应用界面。
优选地,如图3b所示,该第一判断模块302可以包括:第一获取子模块3021、第二获取子模块3022、判断子模块3023,具体如下:
该第一获取子模块3021,用于获取发送该启动请求的源应用程序的应用标识;
该第二获取子模块3022,用于获取在前台运行的应用程序的应用标识,以得到应用标识集合;
该判断子模块3023,用于判断该应用标识集合中是否存在与该源应用程序的应用标识相同的应用标识;若是,则判定发起该启动请求的源应用程序是在前台运行的应用程序。
优选地,该启动请求携带与该应用界面对应的组件标识,如图3c所示,该执行模块304可以包括:确定子模块3041、创建子模块3042,具体如下:
该确定子模块3041,用于根据该组件标识确定相应的目标组件;
该创建子模块3042,用于根据该目标组件创建对应的应用界面。
由上可知,本发明实施例提供的应用界面的启动装置,通过接收模块301接收应用界面的启动请求,第一判断模块302判断发起该启动请求的源应用程序是否是在前台运行的应用程序,第二判断模块303在该第一判断模块302判断为是时,进一步判断该应用界面是否属于该源应用程序,执行模块304在该第二判断模块303判断为是时,启动该应用界面;该方案首先判断源应用程序是否是在前台运行的应用程序,然后进一步判断该应用界面是否属于该源应用程序,只有在前台运行的应用程序请求启动自身的应用界面时,才启动该应用界面,相对于现有技术而言,该方案只允许前台运行的应用程序启动自身的应用界面,而不允许后台运行的应用程序启动应用界面,也不允许前台运行的应用程序启动其它应用程序的应用界面,提高了应用界面启动的安全性。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种应用界面的启动方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。