具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面将分别对上述的两种预设条件对应的信息处理方法进行详细说明。
图1为本申请实施例提供的应用冻结的过程,具体包括以下步骤:
S101:接收针对待处理应用的冻结请求。
在本申请实施例中,针对不需要的应用(以下称为待处理应用),用户可向终端发出针对该待处理应用的冻结请求,该终端的操作系统则可接收到针对该待处理应用的冻结请求。
具体的,用户可通过该操作系统中的指定系统应用输入针对该待处理应用的冻结请求。该指定系统应用具体可以是权限最高的系统应用,如,系统设置等应用。例如,可预先在系统设置应用中提供终端中安装的所有应用的列表,并在该列表中提供每个应用对应的冻结按钮,用户想要冻结某个待处理应用时,则可在该系统设置应用提供的上述列表中,点击该待处理应用对应的冻结按钮,终端的操作系统在监控到用户点击了该待处理应用对应的冻结按钮时,则确定接收到用户输入的针对该待处理应用的冻结请求。
另外,还可在某个用户界面(User Interface,UI)中预先设置隐藏区,该隐藏区用于保存图标。隐藏区在初始时是不显示出来的,当终端监测到用户执行了指定操作时,才显示该隐藏区,也就是显示出该隐藏区中保存的图标,如图2所示。
图2为本申请实施例提供的在桌面上预先设置隐藏区的示意图。在图2中,终端的操作系统预先在桌面UI中设置了隐藏区,在初始状态时,隐藏区并不显示出来。当监测到用户对桌面执行了两个手指分离的操作时,显示出该隐藏区以及该隐藏区中保存的图标。当监测到用户又对桌面执行了两个手指捏合的操作时,将隐藏区恢复为初始状态,即不显示隐藏区。
则当用户想要冻结某个待处理应用时,除了通过上述指定系统应用(如,系统设置应用)输入冻结请求之外,还可直接将该待处理应用的图标置于预设的隐藏区中,例如,用户可先执行上述的指定操作,使终端显示出隐藏区,再将该待处理应用的图标从桌面上拖拽到该隐藏区中。而终端的操作系统在监测到用户将该待处理应用的图标置于该隐藏区中时,则确定接收到针对该待处理应用的冻结请求。
S102:将该待处理应用的状态置为不可用状态。
在本申请实施例中,终端的操作系统接收到针对某个待处理应用的冻结请求后,则可将该待处理应用的状态置为不可用状态。需要说明的是,对于被置为不可用状态的应用来说,其所有的接口和功能模块全部都会被禁用,因此,被置为不可用状态的应用不会被系统调用和运行。此时,被置为不可用状态的该待处理应用类似于被卸载的状态。
而与卸载不同的是,该待处理应用对应的应用数据和用户数据不会被操作系统删除,而是仍在本地保存该待处理应用对应的应用数据和用户数据,以便后续用户解冻该待处理应用时,无需重新下载安装该待处理应用。
通过上述方法,对于不需要的应用,用户可输入针对该应用的冻结请求,终端的操作系统即可将该应用的状态置为不可用状态,由于置为不可用状态的应用不会被系统调用和运行,因此该应用也就不会自动的在后台运行,可避免该应用占用终端的内存资源和网络流量,而且,用户无需卸载该应用,也有效提高了用户管理应用的便利性。
具体的,为了保证应用冻结的安全性,在步骤S102中,操作系统根据接收到的冻结请求,将该待处理应用的状态置为不可用状态时,具体可调用指定系统应用(该指定系统应用可以是权限最高的系统应用,如系统设置应用等),并通过调用的该指定系统应用,将该待处理应用的状态置为不可用状态。例如,可预先在权限最高的系统设置应用中设置广播接收器,当用户通过将待处理应用的图标拖拽到隐藏区中输入冻结请求时,隐藏区的进程可向该系统设置应用发出冻结广播通知,系统设置应用通过广播接收器接收到该冻结广播通知时,即可获知隐藏区已经接收到针对该待处理应用的冻结请求,从而将该待处理应用的状态置为不可用状态。由于系统设置应用中设置的广播接收器被设置为只能接收桌面进程和隐藏区进程发送的广播通知,因此,其他应用的进程也就不能冒充桌面进程和隐藏区进程发送冻结广播通知,避免了其他应用恶意冻结的情况,保证了冻结应用的安全性。
另外,在本申请实施例中,考虑到终端中的有些应用是比较重要的应用(如,系统设置等系统应用),如果将这些应用冻结,可能会导致操作系统不稳定甚至崩溃,因此,在步骤S102中,终端还要对该待处理应用进行验证,在验证该待处理应用合法时,再将该待处理应用的状态置为不可用状态。
在一种可行的方法中,终端的操作系统通过步骤S101接收到的冻结请求中可携带该待处理应用的标识(如,待处理应用的名称等),则在步骤S102中,操作系统可根据该冻结请求中携带的待处理应用的标识,对该待处理应用进行验证,并在验证合法时,将该待处理应用的状态置为不可用状态。
具体的,操作系统可根据该冻结请求中携带的待处理应用的标识,查找待处理应用,具体可查找该待处理应用的程序代码,当确定该待处理应用存在,且该待处理应用不是系统应用时,确定该待处理应用合法。当然,操作系统也可保存当前安装的所有应用的标识列表,并将其中的系统应用的标识标记出来,则根据该冻结请求中携带的待处理应用的标识对该待处理应用进行验证时,可直接查找该标识列表中是否存在该待处理应用的标识,如果存在,再验证标识列表中的该待处理应用的标识是否被标记为系统应用,如果未被标记,则验证通过。也即,只有当前已经安装的非系统应用才可以被冻结,未安装的、或者已安装的系统应用是不能被冻结的。
当然,如果用户是通过将图标拖拽到隐藏区的方式输入冻结请求的,则操作系统还需要判断该图标是否合法,这是因为一个图标可能并不是一个应用的图标,它还可能是一个快捷方式的图标,或者是一个文件夹的图标。因此,判断用户拖入隐藏区的图标是否合法的方法可以是:判断该图标是否为一个应用的图标,如果是,则确定该图标合法,可将该图标对应的应用的状态置为不可用状态,如果不是,则当该图标是一个快捷方式的图标时,操作系统可不对任何应用进行冻结,并返回冻结错误信息,当该图标是一个文件夹的图标时,则操作系统可判断该文件夹中包含的每个图标是否均为应用的图标,如果都是应用的图标,则可将每个图标对应的应用的状态都设置为不可用状态,如果至少一个不是应用的图标,则可不对任何应用进行冻结,并返回冻结错误信息。
在本申请实施例中,考虑到不同的应用之间可能会互相调用,而由于被冻结的应用不会被运行,因此,当操作系统冻结了待处理应用后,需要向各进程(具体是各应用的进程,包括系统进程和非系统进程)发出状态更新广播,以通知各进程该待处理应用已冻结,避免其他应用错误的调用已被冻结的该待处理应用。
另外,由于被置为不可用状态的应用不会被调用和运行,因此,上述的待处理应用被置为不可用状态后,其图标如果仍然显示在桌面上,不仅毫无意义,而且也会引起用户的误解,因此,在本申请实施例中,操作系统将该待处理应用的状态置为不可用状态后,还可将该待处理应用的图标置于预设的隐藏区中。具体的,操作系统将该待处理应用的状态置为不可用状态后,可判断该待处理应用的图标是否显示在桌面上,若是,则将该待处理应用的图标置于隐藏区中,如果该待处理应用的图标已经被置于隐藏区中而未显示在桌面上(如,用户通过将该待处理应用的图标拖拽到隐藏区中输入冻结请求时,该待处理应用的图标就已经被置于隐藏区中了),则无需对该待处理应用的图标进行处理。
进一步的,为了使用户更容易识别出被冻结的应用,本申请实施例中除了要将被冻结的应用的图标置于隐藏区中以外,还可将该隐藏区中的该待处理应用的图标的色彩饱和度设置为预设饱和度,和/或,将该待处理应用的图标的透明度设置为预设透明度。例如,可将该待处理应用的图标的色彩饱和度设置为最小值0,将该待处理应用的图标的透明度设置为75%。
在本申请实施例中,所述的系统包括但不限于安卓系统。下面以安卓系统为例,说明本申请中冻结应用的方法。
由于安卓系统的软件开发工具包(Software DevelopmentKit,SDK)中提供的PackageManager组件可以设置应用的可用或不可用状态,因此,当终端的操作系统是安卓系统时,在上述步骤S102中,终端在接收到针对待处理应用的冻结请求后,可通过系统中的PackageManager.setApplicationEnabledSetting()方法,将待处理应用置为不可用状态。
将该待处理应用置为不可用状态后,操作系统向各进程发出状态更新广播,通知各进程该待处理应用已经冻结时,具体可通过广播Package Update信息。
而在设置该待处理应用的图标的色彩饱和度和透明度时,具体可通过安卓系统提供的Drawable.setColorFilter()方法设置该待处理应用的图标的色彩饱和度,通过安卓系统提供的Drawable.setAlpha()方法设置该待处理应用的图标的透明度。
另外,由于在安卓系统中,桌面进程在启动时(也即系统启动时),会先遍历当前安装的所有应用,对于某个应用来说,如果该应用的接口和功能模块不能被正常调用,则桌面进程会删除该应用对应的应用数据、用户数据和图标(即使该图标在隐藏区中,桌面进程也会将其删掉),而在本申请中,一个应用一旦被冻结,其接口和功能模块就不能被正常调用,因此,桌面进程在启动时很可能会误删被冻结的应用对应的应用数据、用户数据和图标。本申请中为了避免被冻结的应用对应的应用数据、用户数据和图标在桌面进程启动时被误删,桌面进程在启动时,一旦确定某个应用的接口和功能模块不能被正常调用,则可通过PackageManager.getApplicationEnabledSetting()方法来判断该应用是否处于不可用状态,若是,则不删除该应用对应的应用数据、用户数据和图标,否则,删除该应用对应的应用数据、用户数据和图标。
进一步的,桌面进程在运行过程中,如果接收到状态更新广播(PackageUpdate信息),也需要先判断该Package Update信息的内容是否为通知该应用被冻结,若是,则将该应用的图标置于隐藏区中(如果该应用的图标已经在隐藏区中,则可不作任何处理),并设置其色彩饱和度和透明度,否则,可根据Package Update信息中的内容更新应用的图标或做相应的处理。这是因为Package Update信息除了可通知应用被冻结以外,还可通知应用的图标、名称或内容已经更新(如,某应用升级),因此,当桌面进程接收到Package Update信息时,需要先判断该Package Update信息的内容是冻结应用还是更新应用,如果是冻结应用,则需要对该应用的图标进行置入隐藏区、设置色彩饱和度和透明度等操作,如果是更新应用,则可按现有技术中的方法更新该图标、名称等操作。
更进一步的,当待处理应用的状态为可用状态时,桌面进程获取该待处理应用的图标的方法是:通过PackageManager.queryIntentActivities()方法,获得该待处理应用的ResolveInfo对象,再通过ResolveInfo.loadIcon()方法获得该待处理应用的图标。而当待处理应用的状态为不可用状态时,由于不能再通过PackageManager.queryIntentActivities()方法获得ResolveInfo对象,因此,桌面进程获取该待处理应用的图标的方法是:通过PackageManager.getApplicationInfo()方法,获得该待处理应用的ApplicationInfo对象,再通过ApplicationInfo.loadIcon()方法获得该待处理应用的图标。
以上是本申请实施例提供的应用冻结的方法。下面详细说明本申请实施例提供的应用解冻方法,如图3所示。
图3为本申请实施例提供的应用解冻的过程,具体包括以下步骤:
S301:接收针对待处理应用的解冻请求。
与上述应用冻结的方法类似的,用户也可通过指定系统应用输入针对待处理应用的解冻请求,该指定系统应用可以是权限最高的系统应用,如系统设置应用等,这里就不再一一赘述。
另外,与上述应用冻结的方法相对应的,用户也可通过将位于隐藏区中的该待处理应用的图标移出隐藏区(如,将待处理应用的图标从隐藏区中移至桌面上)的方法,来输入针对该待处理应用的解冻请求,则当终端的操作系统监控到用户将待处理应用的图标从隐藏区中移出时,确定接收到针对待处理应用的解冻请求。所述的隐藏区与上述应用冻结方法中的隐藏区的功能完全一致,这里就不在一一赘述。
S302:将待处理应用的状态置为可用状态,其中,被置为可用状态的应用可被系统调用和运行。
在应用解冻过程中,与应用冻结类似的,操作系统仍可调用指定系统应用,通过调用的该指定系统应用,将该待处理应用的状态置为可用状态,该执行系统应用可以是权限最高的系统设置等应用,这里就不再一一赘述。
通过上述方法,当用户冻结了某个应用后,又想要使用该应用时,无需重新下载安装该应用,只需要输入针对该应用的解冻请求,使终端将该应用的状态置为可用状态即可,可有效提高用户管理应用的便利性。
与应用冻结方法类似的,在应用解冻过程中,终端的操作系统将该待处理应用的状态置为可用状态后,也要向各进程(具体是指应用进程,包括系统进程和非系统进程)发出状态更新广播,用以通知各进程该待处理应用已经解冻。
与应用冻结方法相对应的,用于在冻结了一个应用时,该应用的图标会被置于隐藏区中,因此,在解冻待处理应用时,操作系统也要将该待处理应用的图标移出隐藏区,例如,将待处理应用的图标重新置于桌面上。
另外,由于在冻结应用时,应用的图标的色彩饱和度和/或透明度会被调整为预设饱和度和/或预设透明度,因此,在解冻待处理应用时,操作系统也要将待处理应用的图标的色彩饱和度由预设饱和度恢复为默认饱和度,和/或,将待处理应用的图标的透明度由预设透明度恢复为默认透明度。
与冻结应用类似的,在安卓系统下,上述步骤S302中,系统同样可通过PackageManager.setApplicationEnabledSetting()方法,将待处理应用置为可用状态。
类似的,在发出状态更新广播,以通知其他进程该待处理应用已经解冻时,也可发出Package Update信息来通知。
在恢复待处理应用的图标的色彩饱和度和透明度时,可通过Drawable.setColorFilter()方法恢复色彩饱和度,通过Drawable.setAlpha()方法恢复透明度。
将该待处理应用设置为可用状态后,如果桌面进程要获取该待处理应用的图标时,则可采用传统的方法来获取,即,通过PackageManager.queryIntentActivities()方法,获得该待处理应用的ResolveInfo对象,再通过ResolveInfo.loadIcon()方法获得该待处理应用的图标。
以上是本申请实施例提供的应用冻结和解冻的方法,基于同样的思路,本申请还提供了应用冻结和解冻的装置,如图4和图5所示。
图4为本申请实施例提供的应用冻结的装置,具体包括:
接收模块401,用于接收针对待处理应用的冻结请求;
冻结模块402,用于将所述待处理应用的状态置为不可用状态,其中,被置为不可用状态的应用不会被系统调用和运行。
所述接收模块401具体用于,接收用户通过指定系统应用输入的针对待处理应用的冻结请求。
所述接收模块401具体用于,当监测到用户将所述待处理应用的图标置于预设的隐藏区中时,确定接收到针对待处理应用的冻结请求。
所述接收模块401具体用于,接收携带所述待处理应用的标识的冻结请求;
所述冻结模块402具体用于,根据所述冻结请求中携带的所述待处理应用的标识,在验证所述待处理应用合法时,将所述待处理应用的状态置为不可用状态。
所述冻结模块402具体用于,根据所述冻结请求中携带的所述待处理应用的标识,查找所述待处理应用,当确定所述待处理应用存在,且所述待处理应用不是系统应用时,确定所述待处理应用合法。
所述冻结模块402具体用于,调用指定系统应用,其中,所述指定系统应用包括权限最高的系统应用;通过调用的所述指定系统应用,将所述待处理应用的状态置为不可用状态。
所述装置还包括:
存储模块403,用于在本地保存所述待处理应用对应的应用数据和用户数据。
所述装置还包括:
广播模块404,用于在所述冻结模块402将所述待处理应用的状态置为不可用状态之后,向各进程发出状态更新广播,以通知各进程所述待处理应用已经冻结。
所述装置还包括:
图标处理模块405,用于在所述冻结模块402将所述待处理应用的状态置为不可用状态之后,将所述待处理应用的图标置于预设的隐藏区中。
所述图标处理模块405还用于,将所述待处理应用的图标的色彩饱和度设置为预设饱和度,和/或,将所述待处理应用的图标的透明度设置为预设透明度。
所述系统包括安卓系统。
所述冻结模块402具体用于,通过系统中的PackageManager.setApplicationEnabledSetting()方法,将所述待处理应用置为不可用状态。
所述装置还包括:
图标获取模块406,用于当要获取所述待处理应用的图标时,通过PackageManager.getApplicationInfo()方法,获得所述待处理应用的ApplicationInfo对象,通过ApplicationInfo.loadIcon()方法获得所述待处理应用的图标。
具体的,上述如图4所示的装置可以位于终端中,具体可以位于终端的操作系统中。
图5为本申请实施例提供的应用解冻的装置,待处理应用的状态为不可用状态,被置为不可用状态的应用不会被系统调用和运行,该装置具体包括:
接收模块501,用于接收针对所述待处理应用的解冻请求;
解冻模块502,用于将所述待处理应用的状态置为可用状态,其中,被置为可用状态的应用可被系统调用和运行。
所述接收模块501具体用于,接收用户通过指定系统应用输入的针对待处理应用的解冻请求。
当所述待处理应用的状态是不可用状态时,所述待处理应用的图标位于预设的隐藏区中;
所述接收模块501具体用于,当监测到用户将所述待处理应用的图标从所述隐藏区中移出时,确定接收到针对待处理应用的解冻请求。
所述解冻模块502具体用于,调用指定系统应用,其中,所述指定系统应用包括权限最高的系统应用;通过调用的所述指定系统应用,将所述待处理应用的状态置为可用状态。
所述装置还包括:
广播模块503,用于在所述解冻模块502将所述待处理应用的状态置为可用状态后,向各进程发出状态更新广播,以通知各进程所述待处理应用已经解冻。
当所述待处理应用的状态是不可用状态时,所述待处理应用的图标位于预设的隐藏区中;
所述装置还包括:
图标处理模块504,用于将所述待处理应用的图标移出所述隐藏区。
当所述待处理应用的状态是不可用状态时,所述待处理应用的图标的色彩饱和度为预设饱和度,和或,透明度为预设透明度;
所述图标处理模块504还用于,将所述待处理应用的图标的色彩饱和度由预设饱和度恢复为默认饱和度,和或,将所述待处理应用的图标的透明度由预设透明度恢复为默认透明度。
所述系统包括安卓系统。
所述解冻模块502具体用于,通过系统中的PackageManager.setApplicationEnabledSetting()方法,将所述待处理应用置为可用状态。
所述装置还包括:
图标获取模块505,用于当要获取所述待处理应用的图标时,通过PackageManager.queryIntentActivities()方法,获得所述待处理应用的ResolveInfo对象,通过ResolveInfo.loadIcon()方法获得所述待处理应用的图标。
具体的,上述如图5所示的装置可以位于终端中,具体可以位于终端的操作系统中。
本申请实施例提供一种应用冻结、解冻的方法及装置,该方法终端接收到针对待处理应用的冻结请求时,将该待处理应用的状态置为不可用状态,被置为不可用状态的应用不会被系统调用和运行。当接收到针对待处理应用的解冻请求时,将该待处理应用的状态置为可用状态,从而可被系统正常的调用和运行。通过上述方法,对于不需要的应用,如果该应用未提供禁用选项,用户也无需将其卸载,只需通过终端将其设置为不可用状态即可,而后续如果又要使用该应用时,可再将其设置为可用状态,有效的提高了用户管理应用的便利性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。