一种查询隐藏应用的方法及装置与流程

文档序号:12786040阅读:404来源:国知局
一种查询隐藏应用的方法及装置与流程

本发明涉及电子技术领域,尤其涉及一种在查询隐藏应用的方法及装置。



背景技术:

以Android平台为例,移动终端设备通过启动器(Launcher)来提供用户界面来实现与用户之间的人机交互,启动器提供一桌面,在桌面上可以展示已安装的应用程序的图标。通过点击这些图标,便可以启动相应的应用程序。出于隐私保护的需要,用户有时不想某些应用程序被未经授权者发现或运行,以保护其个人隐私。

现有技术中,普遍通过为程序加设程序锁来实现,具体表现为在程序的快捷图标上增加一个“锁具”的图标,当使用者点击相关图标时,会首先运行一验证程序,仅当通过密码校验之后,才加载运行真正的应用。

第二种方式包括:隐藏单元通过禁用隐藏应用的启动组件,使得不在移动终端的桌面上显示隐藏应用的图标。

以上两种方式均存在不足:第一种方式虽然增加了验证环节,但显然会造成此地无银的效果,吸引他人注意,不能达到彻底隐藏应用的目的,且也因为校验环节导致用户体验较差。

第二种方式则会导致被隐藏的应用无法正常启动,其后台应用也无法正常运行,需要通过所谓的寄生应用在运行后对其实施加载,甚至需要依赖于特定的条件才能正常启动。

由此可见,如何在不影响应用正常使用的情况下实现应用程序在启动器中的隐藏,是业内一直无法克服的难题。

因此,现有技术中存在隐藏应用的桌面图标时会导致应用无法正常运行的 技术问题。



技术实现要素:

本发明实施例通过提供一种查询隐藏应用的方法及装置,用以解决现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

本发明实施例第一方面提供了一种查询隐藏应用的方法,所述方法包括:

通过用户进程获取桌面已显示应用的第一列表,以及通过所述用户进程获取已安装应用的第二列表;

通过查询所述第一列表与所述第二列表,获得已隐藏应用的第三列表;

其中,所述已隐藏应用的桌面图标通过以下步骤进行隐藏:通过所述用户进程获取待隐藏应用的设置信息;根据所述设置信息,通过所述用户进程向桌面发送删除所述待隐藏应用的广播消息;通过具有超级用户权限的服务进程对所述广播消息进行提权处理,将所述广播消息的权限提升为所述超级用户权限;根据权限提升后的所述广播消息,在所述桌面上删除所述待隐藏应用的桌面图标。

可选地,在所述将所述广播消息的权项提升为所述超级用户权限之后,所述方法还包括:

在启动器进程访问所述待隐藏应用时,向所述启动器进程返回空值,以在所述启动器进程对应的启动器中删除所述桌面图标。

可选地,所述在启动器进程访问所述待隐藏应用时,向所述启动器进程返回空值,具体包括:

通过钩子函数监测所述启动器进程;

在所述钩子函数监测到所述启动器进程发出想所述待隐藏应用的访问指令时,截获所述访问指令,并向所述启动器进程返回空值。

可选地,所述截获所述访问指令,具体包括:

截获queryIntentActivities、getPackageInfo两个函数中的至少一个函数。

可选地,通过具有超级用户权限的服务进程对所述广播消息进行提权处理,具体包括:

通过钩子函数监测所述用户进程;

在所述钩子函数监测到所述用户进程发送所述广播消息时,将所述广播消息发送给所述服务进程;

通过所述服务进程将所述广播消息的启动者的编码更改为具有所述超级用户权限的编码。

可选地,在所述通过所述服务进程将所述广播消息的启动者编码更改为具有所述超级用户权限的编码之前,所述方法还包括:

通过所述服务进程对所述广播消息的启动者编码进行验证;

在通过所述服务进程确定所述广播消息的启动者编码为所述用户进程对应的编码时,执行步骤:通过所述服务进程将所述广播消息的启动者编码更改为具有所述超级用户权限的编码。

可选地,所述通过所述服务进程将所述广播消息的启动者的编码更改为具有所述超级用户权限的编码,具体包括:

通过所述服务进程将所述广播消息的启动者的编码更改为1000。

可选地,所述通过查询所述第一列表与所述第二列表,获取已隐藏应用的第三列表,具体包括:

对比所述第一列表与所述第二列表;

将出现在所述第二列表中且未出现在所述第一列表中的应用确定为所述已隐藏应用。

本发明实施例第二方面提供了一种查询隐藏应用的装置,所述装置包括:

列表获取单元,用于通过用户进程获取桌面已显示应用的第一列表,以及通过所述用户进程获取已安装应用的第二列表;

查询单元,用于通过查询所述第一列表与所述第二列表,获得已隐藏应用的第三列表;

其中,已隐藏应用的桌面图标通过隐藏装置进行隐藏,所述隐藏装置包括:获取单元,用于通过用户进程获取待隐藏应用的设置信息;发送单元,用于根据所述设置信息,通过所述用户进程发送删除所述待隐藏应用的广播消息;提权单元,通过具有超级用户权限的服务进程对所述广播消息进行提权处理,将所述广播消息的权限提升为所述超级用户权限;删除单元,根据权限提升后的所述广播消息,在桌面上删除所述待隐藏应用的桌面图标。

可选地,在所述将所述广播消息的权项提升为所述超级用户权限之后,所述装置还包括:

空值返回单元,用于在启动器进程访问所述待隐藏应用时,向所述启动器进程返回空值,以在所述启动器进程对应的启动器中删除所述桌面图标。

可选地,所述空值返回单元具体用于通过钩子函数监测所述启动器进程,并在所述钩子函数监测到所述启动器进程发出想所述待隐藏应用的访问指令时,截获所述访问指令,并向所述启动器进程返回空值。

可选地,所述空值返回单元具体用于截获queryIntentActivities、getPackageInfo两个函数中的至少一个函数。

可选地,所述提权单元具体用于通过钩子函数监测所述用户进程,并在所述钩子函数监测到所述用户进程发送所述广播消息时,将所述广播消息发送给所述服务进程,并通过所述服务进程将所述广播消息的启动者的编码更改为具有所述超级用户权限的编码。

可选地,所述装置还包括验证单元,所述验证单元用于在所述通过所述服务进程将所述广播消息的启动者编码更改为具有所述超级用户权限的编码之前,通过所述服务进程对所述广播消息的启动者编码进行验证,并在通过所述服务进程确定所述广播消息的启动者编码为所述用户进程对应的编码时,所述提权单元具体用于通过所述服务进程将所述广播消息的启动者编码更改为具有所述超级用户权限的编码。

可选地,所述验证单元具体用于通过所述服务进程将所述广播消息的启动 者的编码更改为1000。

可选地,所述查询单元具体用于对比所述第一列表与所述第二列表,并将出现在所述第二列表中且未出现在所述第一列表中的应用确定为所述已隐藏应用。。

本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

由于采用了根据待隐藏应用的设置信息,通过用户进程向桌面发送删除待隐藏应用的广播消息,并通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限的技术方案,该广播消息具有了超级用户权限,所以能够在桌面上删除待隐藏应用的桌面图标,实现了隐藏应用的桌面图标的技术效果,同时由于本实施例提供的方法仅仅删除了隐藏应用的桌面图标,所以不会对应用的正常运行如应用的正常启动或后台程序的启动等等造成影响,从而解决了现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

附图说明

图1为本发明实施例提供的查询隐藏应用的方法的流程图;

图2为本发明实施例提供的隐藏应用的桌面图标的方法的流程图;

图3为本发明一实施例提供的隐藏应用的桌面图标的方法的流程图;

图4为本发明实施例提供的查询隐藏应用的装置的示意图;

图5为本发明实施例提供的隐藏应用的桌面图标的装置的示意图。

具体实施方式

本发明实施例通过提供一种隐藏应用的桌面图标的方法及装置,用以解决现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

在接下来的实施例中,将以本发明实施例提供的方法应用于安卓系统为例,来进行详细地举例介绍,在其他实施例中,还可以应用于诺基亚公司提供的塞班系统或苹果公司提供的苹果系统中,在此不做限制。

实施例一

请参考图1,图1为本发明实施例提供的查询隐藏应用的方法的流程图,如图1所示,该方法包括:

S11:通过用户进程获取桌面已显示应用的第一列表,以及通过用户进程获取已安装应用的第二列表。

在S11中,具体来讲,通过用户进程获取桌面已显示应用的第一列表,具体可以通过查询启动器提供的桌面上显示的应用,并将该桌面上显示的应用列入第一列表中;同时,可以通过用户进程访问系统中已安装应用程序的文件夹,针对系统自带的应用,其安装包存储于system/app目录中,针对用户自装的第三方应用,其安装包存储于data/app目录中,并将已安装应用列入第二列表中。

S12:通过查询第一列表与第二列表,获得已隐藏应用的第三列表;

在S12中,具体来讲,包括以下步骤:

对比第一列表与第二列表;例如,可以将第二列表中的每个应用在第一列表中进行遍历查询;若某个应用在第二列表中出现且未在出现在第一列表中,则将该应用确定为已隐藏应用,以此遍历第二列表中的每个应用,则可以得到已隐藏应用的列表。

在本实施例中,已隐藏应用的桌面图标通过以下步骤进行隐藏:通过用户进程获取待隐藏应用的设置信息;根据设置信息,通过用户进程向桌面发送删除待隐藏应用的广播消息;通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限;根据权限提升后的广播消息,在桌面上删除待隐藏应用的桌面图标。

由于采用了根据待隐藏应用的设置信息,通过用户进程向桌面发送删除待 隐藏应用的广播消息,并通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限的技术方案,该广播消息具有了超级用户权限,所以能够在桌面上删除待隐藏应用的桌面图标,实现了隐藏应用的桌面图标的技术效果,同时由于本实施例提供的方法仅仅删除了隐藏应用的桌面图标,所以不会对应用的正常运行如应用的正常启动或后台程序的启动等等造成影响,从而解决了现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

实施例二

请参考图2,图2为本发明实施例提供的隐藏应用的桌面图标的方法的流程图,本实施例介绍了实施例一中对已隐藏应用的桌面图标的隐藏过程,如图2所示,该方法包括:

101:通过用户进程获取待隐藏应用的设置信息;

具体来讲,可以在系统的前端安装一应用程序,在系统开机时,即可启动该应用程序,该应用程序启动后便构造出用户进程,该用户进程的目的,在于确保服务进程能够在开机时先于启动器获取由用户进程获取并生成的待隐藏应用的设置信息,特别是指其中涉及待隐藏应用的设置信息以及相应的包名等数据。

102:根据设置信息,通过用户进程发送删除待隐藏应用的广播消息;

具体来讲,根据设置信息,可以通过用户进程利用Intent参数,并通过调用sendBroadcast方法,在系统中发送广播消息,该广播消息具体可以是一个Binder消息。但是,由于该广播消息的启动者编码(英文:UserIdentification;简称UID)为该用户进程,所以系统的桌面显示组件可能不会执行该广播消息,需要进一步地处理。

103:通过具有超级用户权限的服务进程对广播消息进行提权处理,将广 播消息的权限提升为超级用户权限;

具体来讲,该服务进程可以是申请超级用户(英文:SuperUser;简称:SU)权限后执行相应的命令,将该服务进程注入到系统底层,使得该服务进程具有超级用户权限。在本实施例中,通过该服务进程对广播消息进行提权处理可以是将广播消息的UID更改为1000,使得该广播消息具有超级用户权限。

104:根据权限提升后的广播消息,在桌面上删除待隐藏应用的桌面图标。

在本实施例中,由于采用了根据待隐藏应用的设置信息,通过用户进程向桌面发送删除待隐藏应用的广播消息,并通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限的技术方案,该广播消息具有了超级用户权限,所以能够在桌面上删除待隐藏应用的桌面图标,实现了隐藏应用的桌面图标的技术效果,同时由于本实施例提供的方法仅仅删除了隐藏应用的桌面图标,所以不会对应用的正常运行如应用的正常启动或后台程序的启动等等造成影响,从而解决了现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

实施例三

实施例三为在实施例二的基础上的细化,为实施例二提供的方法提供了详细的应用场景。

请参考图3,图3为本发明实施例提供的隐藏应用的桌面图标的方法的流程图,如图3所示,该方法包括:

201:通过用户进程获取待隐藏应用的设置信息;

本步骤与实施例中步骤101一致,在此不再赘述。

需要说明的是,对于一次开机过程而言,待隐藏应用的设置信息是已经由用户进程采集存储在本地的数据。开机过程中,启动器成功加载之前,用户进程的前端活动组件(Activity)未能显示,因为这一过程中不能通过用户进程来采集数据,只能通过用户进程获取上一次运行时已经采集生成的数据。而在启动 器加载完成后,也即用户进程在其能正常显示用户界面时,会通过一活动组件提供一用户界面,在用户界面提供一已安装应用列表,用户选中某个已安装应用时,被系统视为将该已安装应用标记为被隐藏状态;当用户去除其选中状态时,则被系统视为将该已安装应用标记为被显示状态。借助该用户界面,可以通过多种公知方式来实现用户界面内容布局设计和用户数据采集方式设计,在此就不再赘述了。

这里所称的已安装应用,既包括系统自带的应用,其安装包存储于system/app目录中,也包括用户自装的第三方应用,其安装包存储于data/app目录中。不管何种类型,用户进程均可以获取与该应用有关的信息,尤其是其中的包名。例如,通过queryIntentActivities函数来获取注册有action.MAIN和action.LANUCHER的活动组件(意味着此一活动组件的快捷方式图标将被显示到桌面上)的安装包,继而通过getPackageInfo来获取这些安装包的包名、版本号之类的信息等,由此便在理论上获取了所有能被桌面显示图标的已安装应用。

用户进程的活动组件将其提供的活动过程中采集的用户设置信息,建立存储表格,例如,可以为该表格建立从已安装应用的包名到用户选定的隐藏状态设置信息之间的映射关系,从而将该活动过程中采集的已安装应用包名及其相应的隐藏状态标记对应存储到该表格中。存储表格的设计方案也可以采用其它变例,例如,仅将需要隐藏的应用列入该存储表格,不需要隐藏的应用则从该表格中去除,由此,应用的隐藏状态设置信息即由该存储表格中包名的有无所代替。本领域技术人员应当能灵活设计此存储表格,在此就不再赘述了。

由此,服务进程,无论是在启动器被加载之前的系统开机过程中,还是在启动器被成功加载之后,均可通过与该用户进程通信,来通过该用户进程获取该表格中的用户设置信息,也即确定待隐藏的应用,以及待显示的已隐藏应用。服务进程最终确定其所需的应用的依据,是数据表中的包名与其相应的隐藏状态设置信息,当隐藏状态设置信息表征为待隐藏时,则将这些相应的应用视为 待隐藏应用做后续处理;反之,当隐藏状态设置信息表征为待显示(非隐藏)时,则将这些相应的应用视为待显示的已隐藏应用做后续处理。

需要特别强调的是,此处已经揭示,通过用户进程的活动组件所提供的用户界面,既可用于确定待隐藏的应用,也可用于确定待显示的已隐藏应用,因此,可以知晓,本步骤既适用于确定待隐藏的应用,也适用于确定待显示的已隐藏应用,换言之,本发明确定所需的应用,无论是待隐藏的应用,还是待显示的已隐藏应用,均在本质上由相同的进程实现。实现确定待隐藏的应用的步骤,以及后续实现确定待显示的已隐藏应用的步骤,在本质上是同组进程活动的两个方面,其不同仅表现在存储表格的数据表达上。

202:根据设置信息,通过用户进程向桌面发送删除待隐藏应用的广播消息;

步骤202与实施例一中的步骤102一致,在此就不再赘述了。

具体而言,针对待隐藏应用,向桌面发送该应用已经被删除的广播消息,形式如:sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED,removedPackage Name,extras,null,null,removedUsers)。

203:通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限;

在本实施例中,步骤203可以包括:通过钩子函数监测用户进程;在钩子(hook)函数监测到用户进程发送广播消息时,将广播消息发送给服务进程;通过服务进程将广播消息的启动者的编码更改为具有超级用户权限的编码。

当然,为了保证服务进程不会将任意程序发送服务进程的广播消息都提升为超级用户权限,本发明实施例提供的方法还包括:通过服务进程对广播消息的启动者编码进行验证;在通过服务进程确定广播消息的启动者编码为用户进程对应的编码时,执行步骤:通过服务进程将广播消息的启动者编码更改为具有超级用户权限的编码。这样,保证了广播消息的准确性,避免出现系统故障。

204:根据权限提升后的广播消息,在桌面上删除待隐藏应用的桌面图标。

步骤204与实施例一中的步骤104一致,在此就不再赘述了。

可以看出,由于该广播消息时,由于该广播消息的启动者编码为1000,同时又包含了该应用的包名removedPackageName,在启动器收到该广播消息后,通过getDataStrings函数获得广播消息中的包名,会认为包名为removedPackageName的应用已经被删除,于是后续将该应用的快捷方式图标从启动器桌面中删除。多个应用均可以这种技术欺骗方式去操作。

可以看出,从技术原理上,本实施例提供的采用了类似技术欺骗的手段,通过欺骗启动器进程而实现应用的快捷方式图标的隐藏和显示控制。通过分析Android启动器(Launcher)的代码便可知晓其运行机理。Android系统的Home应用程序Launcher是由ActivityManagerService启动的,而ActivityManagerService和PackageManagerService一样,都是在开机时由SystemServer组件启动的,SystemServer组件首先是启动PackageManagerService,由它来负责安装系统的应用程序,系统中的应用程序安装好了以后,SystemServer组件接下来就要通过ActivityManagerService来启动Home应用程序Launcher了,Launcher在启动的时候便会通过PackageManagerService把系统中已经安装好的应用程序以快捷方式图标的形式展示在桌面上。将图标展示到桌面的过程,会调用queryIntentActivities和getPackageInfo两个函数,queryIntentActivities用于获取所有注册了action.MAIN和action.Launcher的活动组件(Activity)的应用程序,进一步通过getPackageInfo可以获得包括应用程序包名在内的相关应用程序参数。这两个参数如果得到有效数据,便能够将图标展示到桌面上。除此之外,在整个启动器的进程生命周期中,当其接收到android.intent.action.PACKAGE_REMOVED(表示某一指定包名的应用已经被删除)或android.intent.action.PACKAGE_ADDED(表示某一指定包名的应用已经被添加)广播消息之后,也会调用上述两个函数以期展示已安装的应用。因 此,通过给启动器发送上述已删除的广播消息,便可让启动器以为广播消息中所包含的指定包名的已经被删除,进一步启动器调用queryIntentActivities和getPackageInfo两个函数企图进行桌面展示内容更新时,本发明又将截获该两个函数,针对该应用向该两个函数返回表征应用已经不存在的空值,由此让启动器彻底误信应用不存在,而不再在桌面上展示该应用的快捷方式图标(如果图标之前已经存在,将被启动器删除)。而在用户需要正常使用该应用,不再隐藏该应用时,本发明可发送android.intent.action.PACKAGE_ADDED广播消息给启动器,除此之外不再对启动器的运行过程施加任何干涉,启动器由此便可以调用queryIntentActivities和getPackageInfo两个函数获得该应用的特征信息,将其快捷方式图标正常显示到桌面上。

但是,如前,启动器固有的机制中,将通过调用queryIntentActivities和getPackageInfo两个函数去实现桌面内容的更新,因此,这两个函数会再度发现的应用,从而使用户使仅以前述发送广播消息的步骤不能实现应用隐藏的目的。这种情况下,需要步骤205辅以完善。

205:在启动器进程访问待隐藏应用时,向启动器进程返回空值,以在启动器进程对应的启动器中删除桌面图标。

具体来讲,在本实施例中,步骤205可以包括:通过钩子函数监测启动器进程;在钩子函数监测到启动器进程发出想待隐藏应用的访问指令时,截获访问指令,具体来讲,是截获queryIntentActivities、getPackageInfo两个函数中的至少一个函数,并向启动器进程返回空值。

需要说明的是,步骤205中的钩子函数可以和步骤203中的钩子函数是两个不同的钩子函数,也可以是基于同一钩子函数下不同的两个子钩子进程,在此不做限制。

可以看出,由于采用了根据待隐藏应用的设置信息,通过用户进程向桌面发送删除待隐藏应用的广播消息,并通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限的技术方案,该广 播消息具有了超级用户权限,所以能够在桌面上删除待隐藏应用的桌面图标,实现了隐藏应用的桌面图标的技术效果,同时由于本实施例提供的方法仅仅删除了隐藏应用的桌面图标,所以不会对应用的正常运行如应用的正常启动或后台程序的启动等等造成影响,从而解决了现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

实施例四

为了实现本发明实施例提供的查询隐藏应用的方法,请参考图4,图4位本发明实施例提供的查询隐藏应用的装置的示意图,如图4所示,该装置包括:

列表获取单元401,用于通过用户进程获取桌面已显示应用的第一列表,以及通过用户进程获取已安装应用的第二列表;

查询单元402,用于通过查询第一列表与第二列表,获得已隐藏应用的第三列表。

进一步地,查询单元401具体用于对比第一列表与第二列表,并将出现在第二列表中且未出现在第一列表中的应用确定为已隐藏应用。

本发明实施例提供的查询隐藏应用的装置,与前述实施例介绍查询隐藏应用的方法是基于同一发明构思下的两个方面,在前述实施例中已经详细地介绍了查询隐藏应用的方法运行原理及过程,在此为了说明书的简洁,就不再赘述了。

在本实施例中,已隐藏应用的桌面图标通过隐藏装置进行隐藏,隐藏装置包括:获取单元,用于通过用户进程获取待隐藏应用的设置信息;发送单元,用于根据设置信息,通过用户进程发送删除待隐藏应用的广播消息;提权单元,通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限;删除单元,根据权限提升后的广播消息,在桌面上删除待隐藏应用的桌面图标。

进一步地,在将广播消息的权项提升为超级用户权限之后,装置还包括:

空值返回单元,用于在启动器进程访问待隐藏应用时,向启动器进程返回空值,以在启动器进程对应的启动器中删除桌面图标。

进一步地,空值返回单元具体用于通过钩子函数监测启动器进程,并在钩子函数监测到启动器进程发出想待隐藏应用的访问指令时,截获访问指令,并向启动器进程返回空值。

进一步地,空值返回单元具体用于截获queryIntentActivities、getPackageInfo两个函数中的至少一个函数。

进一步地,提权单元具体用于通过钩子函数监测用户进程,并在钩子函数监测到用户进程发送广播消息时,将广播消息发送给服务进程,并通过服务进程将广播消息的启动者的编码更改为具有超级用户权限的编码。

进一步地,装置还包括验证单元,验证单元用于在通过服务进程将广播消息的启动者编码更改为具有超级用户权限的编码之前,通过服务进程对广播消息的启动者编码进行验证,并在通过服务进程确定广播消息的启动者编码为用户进程对应的编码时,提权单元具体用于通过服务进程将广播消息的启动者编码更改为具有超级用户权限的编码。

进一步地,验证单元具体用于通过服务进程将广播消息的启动者的编码更改为1000。

可以看出,由于采用了根据待隐藏应用的设置信息,通过用户进程向桌面发送删除待隐藏应用的广播消息,并通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限的技术方案,该广播消息具有了超级用户权限,所以能够在桌面上删除待隐藏应用的桌面图标,实现了隐藏应用的桌面图标的技术效果,同时由于本实施例提供的方法仅仅删除了隐藏应用的桌面图标,所以不会对应用的正常运行如应用的正常启动或后台程序的启动等等造成影响,从而解决了现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

实施例五

为了实现本发明实施例提供的隐藏应用的桌面图标的方法,请参考图5,图5为本发明实施例提供的隐藏装置的示意图,如图5所示,该隐藏装置包括:

获取单元301,用于通过用户进程获取待隐藏应用的设置信息;

发送单元302,用于根据设置信息,通过用户进程发送删除待隐藏应用的广播消息;

提权单元303,通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限;

删除单元304,根据权限提升后的广播消息,在桌面上删除待隐藏应用的桌面图标。

进一步地,在将广播消息的权项提升为超级用户权限之后,装置还包括:

空值返回单元305,用于在启动器进程访问待隐藏应用时,向启动器进程返回空值,以在启动器进程对应的启动器中删除桌面图标。

进一步地,空值返回单元305具体用于通过钩子函数监测启动器进程,并在钩子函数监测到启动器进程发出想待隐藏应用的访问指令时,截获访问指令,并向启动器进程返回空值。

进一步地,空值返回单元305具体用于截获queryIntentActivities、getPackageInfo两个函数中的至少一个函数。

进一步地,提权单元303具体用于通过钩子函数监测用户进程,并在钩子函数监测到用户进程发送广播消息时,将广播消息发送给服务进程,并通过服务进程将广播消息的启动者的编码更改为具有超级用户权限的编码。

进一步地,装置还包括验证单元306,验证单元306用于在通过服务进程将广播消息的启动者编码更改为具有超级用户权限的编码之前,通过服务进程对广播消息的启动者编码进行验证,并在通过服务进程确定广播消息的启动者编码为用户进程对应的编码时,提权单元303具体用于通过服务进程将广播消息的启动者编码更改为具有超级用户权限的编码。

进一步地,验证单元306具体用于通过服务进程将广播消息的启动者的编码更改为1000。

本发明实施例提供的隐藏应用的桌面图标的装置,与前述实施例介绍的隐藏应用的桌面图标的方法是基于同一发明构思下的两个方面,在前述实施例中已经详细地介绍了隐藏应用的桌面图标的方法的运行原理及过程,在此为了说明书的简洁,就不再赘述了。

本发明实施例中的一个或者多个技术方案,至少具有如下技术效果或者优点:

由于采用了根据待隐藏应用的设置信息,通过用户进程向桌面发送删除待隐藏应用的广播消息,并通过具有超级用户权限的服务进程对广播消息进行提权处理,将广播消息的权限提升为超级用户权限的技术方案,该广播消息具有了超级用户权限,所以能够在桌面上删除待隐藏应用的桌面图标,实现了隐藏应用的桌面图标的技术效果,同时由于本实施例提供的方法仅仅删除了隐藏应用的桌面图标,所以不会对应用的正常运行如应用的正常启动或后台程序的启动等等造成影响,从而解决了现有技术中存在的隐藏应用的桌面图标时会导致应用无法正常运行的技术问题。

本发明实施例公开了:

A1、一种查询隐藏应用的方法,其特征在于,所述方法包括:

通过用户进程获取桌面已显示应用的第一列表,以及通过所述用户进程获取已安装应用的第二列表;

通过查询所述第一列表与所述第二列表,获得已隐藏应用的第三列表;

其中,所述已隐藏应用的桌面图标通过以下步骤进行隐藏:通过所述用户进程获取待隐藏应用的设置信息;根据所述设置信息,通过所述用户进程向桌面发送删除所述待隐藏应用的广播消息;通过具有超级用户权限的服务进程对所述广播消息进行提权处理,将所述广播消息的权限提升为所述超级用户权限;根据权限提升后的所述广播消息,在所述桌面上删除所述待隐藏应用的桌 面图标。

A2、根据A1所述的方法,其特征在于,在所述将所述广播消息的权项提升为所述超级用户权限之后,所述方法还包括:

在启动器进程访问所述待隐藏应用时,向所述启动器进程返回空值,以在所述启动器进程对应的启动器中删除所述桌面图标。

A3、根据A2所述的方法,其特征在于,所述在启动器进程访问所述待隐藏应用时,向所述启动器进程返回空值,具体包括:

通过钩子函数监测所述启动器进程;

在所述钩子函数监测到所述启动器进程发出想所述待隐藏应用的访问指令时,截获所述访问指令,并向所述启动器进程返回空值。

A4、根据A3所述的方法,其特征在于,所述截获所述访问指令,具体包括:

截获queryIntentActivities、getPackageInfo两个函数中的至少一个函数。

A5、根据A1所述的方法,其特征在于,通过具有超级用户权限的服务进程对所述广播消息进行提权处理,具体包括:

通过钩子函数监测所述用户进程;

在所述钩子函数监测到所述用户进程发送所述广播消息时,将所述广播消息发送给所述服务进程;

通过所述服务进程将所述广播消息的启动者的编码更改为具有所述超级用户权限的编码。

A6、根据A5所述的方法,其特征在于,在所述通过所述服务进程将所述广播消息的启动者编码更改为具有所述超级用户权限的编码之前,所述方法还包括:

通过所述服务进程对所述广播消息的启动者编码进行验证;

在通过所述服务进程确定所述广播消息的启动者编码为所述用户进程对应的编码时,执行步骤:通过所述服务进程将所述广播消息的启动者编码更改 为具有所述超级用户权限的编码。

A7、根据A5所述的方法,其特征在于,所述通过所述服务进程将所述广播消息的启动者的编码更改为具有所述超级用户权限的编码,具体包括:

通过所述服务进程将所述广播消息的启动者的编码更改为1000。

A8、根据A1所述的方法,其特征在于,所述通过查询所述第一列表与所述第二列表,获取已隐藏应用的第三列表,具体包括:

对比所述第一列表与所述第二列表;

将出现在所述第二列表中且未出现在所述第一列表中的应用确定为所述已隐藏应用。

B9、一种查询隐藏应用的装置,其特征在于,所述装置包括:

列表获取单元,用于通过用户进程获取桌面已显示应用的第一列表,以及通过所述用户进程获取已安装应用的第二列表;

查询单元,用于通过查询所述第一列表与所述第二列表,获得已隐藏应用的第三列表;

其中,已隐藏应用的桌面图标通过隐藏装置进行隐藏,所述隐藏装置包括:获取单元,用于通过用户进程获取待隐藏应用的设置信息;发送单元,用于根据所述设置信息,通过所述用户进程发送删除所述待隐藏应用的广播消息;提权单元,通过具有超级用户权限的服务进程对所述广播消息进行提权处理,将所述广播消息的权限提升为所述超级用户权限;删除单元,根据权限提升后的所述广播消息,在桌面上删除所述待隐藏应用的桌面图标。

B10、根据B9所述的装置,其特征在于,在所述将所述广播消息的权项提升为所述超级用户权限之后,所述装置还包括:

空值返回单元,用于在启动器进程访问所述待隐藏应用时,向所述启动器进程返回空值,以在所述启动器进程对应的启动器中删除所述桌面图标。

B11、根据B10所述的装置,其特征在于,所述空值返回单元具体用于通过钩子函数监测所述启动器进程,并在所述钩子函数监测到所述启动器进程发 出想所述待隐藏应用的访问指令时,截获所述访问指令,并向所述启动器进程返回空值。

B12、根据B11所述的装置,其特征在于,所述空值返回单元具体用于截获queryIntentActivities、getPackageInfo两个函数中的至少一个函数。

B13、根据B9所述的装置,其特征在于,所述提权单元具体用于通过钩子函数监测所述用户进程,并在所述钩子函数监测到所述用户进程发送所述广播消息时,将所述广播消息发送给所述服务进程,并通过所述服务进程将所述广播消息的启动者的编码更改为具有所述超级用户权限的编码。

B14、根据B13所述的装置,其特征在于,所述装置还包括验证单元,所述验证单元用于在所述通过所述服务进程将所述广播消息的启动者编码更改为具有所述超级用户权限的编码之前,通过所述服务进程对所述广播消息的启动者编码进行验证,并在通过所述服务进程确定所述广播消息的启动者编码为所述用户进程对应的编码时,所述提权单元具体用于通过所述服务进程将所述广播消息的启动者编码更改为具有所述超级用户权限的编码。

B15、根据B13所述的装置,其特征在于,所述验证单元具体用于通过所述服务进程将所述广播消息的启动者的编码更改为1000。

B16、根据B9所述的装置,其特征在于,所述查询单元具体用于对比所述第一列表与所述第二列表,并将出现在所述第二列表中且未出现在所述第一列表中的应用确定为所述已隐藏应用。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细 示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一 些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1