应用隐藏控制方法及装置制造方法

文档序号:6635877阅读:219来源:国知局
应用隐藏控制方法及装置制造方法
【专利摘要】本发明涉及智能设备的安全控制技术,公开一种应用隐藏控制方法,包括以下步骤:确定待隐藏的目标应用;发送表征所述目标应用已删除的广播消息;截获启动器进程对所述目标应用的访问指令,针对所述目标应用对应向启动器进程返回空值,以在启动器中隐藏该目标应用的快捷方式图标。进一步,可为本发明附加如下步骤:确定待显示的已隐藏目标应用;发送表征所述已隐藏目标应用已添加的广播消息,以在启动器中显示该目标应用的快捷方式图标。本发明能够在启动器中隐藏应用程序,且不影响应用程序的后续正常运行。本发明不仅可以应用于Android操作系统中,还可以用于具有类似架构和机制的操作系统环境中。
【专利说明】应用隐藏控制方法及装置

【技术领域】
[0001]本发明涉及智能设备的安全控制技术,尤其涉及一种应用隐藏控制方法及装置。

【背景技术】
[0002]以Android平台为例,移动终端设备通过启动器(Launcher)来提供用户界面来实现与用户之间的人机交互,启动器提供一桌面,在桌面上可以展示已安装的应用程序的图标。通过点击这些图标,便可以启动相应的应用程序。出于隐私保护的需要,用户有时不想某些应用程序被未经授权者发现或运行,以保护其个人隐私。现有技术中,普遍采用两种方式加以保护:
[0003]第一种方式是通过为程序加设程序锁来实现,当使用者点击相关图标时,会首先运行一验证程序,仅当通过密码校验之后,才加载运行真正的目标应用。
[0004]第二种方式请参阅2014年5月14日公开的CN103793657A号专利公告所揭示的用于在移动终端上隐藏应用的系统和方法,在该方法中,其揭示:隐藏单元通过禁用隐藏应用的启动组件,使得不在移动终端的桌面上显示隐藏应用的图标。
[0005]以上两种方式均存在不足:
[0006]第一种方式虽然增加了验证环节,但显然会造成此地无银的效果,吸引他人注意,不能达到彻底隐藏应用的目的,且也因为校验环节导致用户体验较差。
[0007]第二种方式则会导致被隐藏的应用无法正常启动,其后台应用也无法正常运行,需要通过所谓的寄生应用在运行后对其实施加载,甚至需要依赖于特定的条件才能正常启动。
[0008]由此可见,如何在不影响应用正常使用的情况下实现应用程序在启动器中的隐藏,是业内一直无法克服的难题。


【发明内容】

[0009]本发明的目的在于实现应用程序在启动器中的隐藏控制,而提供一种应用隐藏控制方法和装置。
[0010]为实现本发明的目的,本发明采取如下技术方案:
[0011]本发明提供的一种应用隐藏控制方法,包括以下步骤:
[0012]确定待隐藏的目标应用;
[0013]发送表征所述目标应用已删除的广播消息;
[0014]截获启动器进程对所述目标应用的访问指令,针对所述目标应用对应向启动器进程返回空值,以在启动器中隐藏该目标应用的快捷方式图标。
[0015]此外,为便于用户按需回显已隐藏目标应用,该方法还包括如下步骤:
[0016]确定待显示的已隐藏目标应用;
[0017]发送表征所述已隐藏目标应用已添加的广播消息,以在启动器中显示该目标应用的快捷方式图标。
[0018]进一步,所述确定待隐藏的目标应用的步骤,具体包括如下子步骤:
[0019]基于Root权限向系统注册基于系统底层通信机制的服务进程;
[0020]基于Root权限启动用户进程,用户进程绑定与服务进程的通信;
[0021]服务进程通过用户进程获取已安装应用的包名及其对应的隐藏状态设置信息,以依据所述隐藏状态设置信息确定所述待隐藏的目标应用或确定待显示的已隐藏目标应用。由此,不仅可在开机时快速实施本方法,而且可以借助系统底层通信机制实现有效的隐藏控制效果。
[0022]较佳的,本方法各步骤先于启动器进程的启动而执行,或者,先于启动器进程对所述目标应用的访问指令的调用而执行,由此避免被先启动的启动器先行显示待隐藏目标应用的快捷方式图标,而获得彻底隐藏目标应用的效果。
[0023]具体的,所述广播消息由所述服务进程进行发送。
[0024]可选地,所述截获访问指令并返回空值的步骤,由所述的服务进程或者能与所述服务进程通信的独立进程执行。
[0025]较佳的,所述确定目标应用的步骤,通过所述用户进程提供用户界面,用于获取已安装应用的包名并显示已安装应用列表,以接收用户针对其中的已安装应用输入的隐藏状态设置信息,以供服务进程依据所述隐藏状态设置信息确定所需的目标应用。
[0026]具体的,所述已安装应用包括系统应用和/或第三方应用。
[0027]较佳的,所述确定待隐藏的目标应用的步骤,以及所述确定待显示的已隐藏目标应用的步骤,合并于同一活动组件,通过调用该活动组件而实现。
[0028]具体的,通过确定目标应用的包名而确定所需的目标应用,该包名被包含在所述广播消息中进行发送。
[0029]具体的,所述截获访问指令并返回空值的步骤,采用钩子函数挂钩所述访问指令的方式实现。
[0030]较佳的,所述对目标应用的访问指令,包括querylntentActivities、getPackagelnfo两个函数中任意一个或多个。
[0031]本发明提供的一种应用隐藏控制装置,包括:
[0032]确定单元,用于确定待隐藏的目标应用;
[0033]广播单元,用于发送表征所述目标应用已删除的广播消息;
[0034]监控单元,用于截获启动器进程对所述目标应用的访问指令,针对所述目标应用对应向启动器进程返回空值,以在启动器中隐藏该目标应用的快捷方式图标。
[0035]进一步,该装置中:
[0036]所述确定单元还用于确定待显示的已隐藏目标应用;
[0037]所述广播单元还用于发送表征所述已隐藏目标应用已添加的广播消息,以在启动器中显示该目标应用的快捷方式图标。
[0038]所述确定单元具体包括:
[0039]注册模块,被配置为基于Root权限向系统注册基于系统底层通信机制的服务进程;
[0040]启动模块,被配置为基于Root权限启动用户进程,使用户进程绑定与服务进程的通信;
[0041]所述服务进程通过用户进程获取已安装应用的包名及其对应的隐藏状态设置信息,以依据所述隐藏状态设置信息确定所述待隐藏的目标应用或确定待显示的已隐藏目标应用。
[0042]可选的,所述广播单元与监控单元合并为同一功能模块。
[0043]进一步,所述确定单元中:
[0044]所述用户进程提供用户界面,用于获取已安装应用的包名并显示已安装应用列表,以接收用户针对其中的已安装应用输入的隐藏状态设置信息;
[0045]所述服务进程依据所述隐藏状态设置信息确定所需的目标应用。
[0046]较佳的,所述已安装应用包括系统应用和/或第三方应用。
[0047]较佳的,所述确定单元实现于同一活动组件。
[0048]进一步,所述确定单元通过确定目标应用的包名而确定所需的目标应用,所述广播消息包含有目标应用的包名。
[0049]相较于现有技术,本发明至少具有如下优点:
[0050]1、本发明能获得安全的隐藏效果:本发明利用了启动器自身的功能特点,针对待隐藏的目标应用,向启动器发送该目标应用已删除的广播消息,通过技术欺骗的手段,使启动器产生目标应用已经删除的错觉,从而将该目标应用的快捷方式图标从启动器中删除而不再显示,实现了应用程序快捷方式图标在启动器中的初步隐藏。进而,为了避免启动器因通过自身固有的功能而调用访问指令获取应用程序列表进而在桌面重新显示已经初步隐藏的图标,本发明还通过截获这类访问指令,使其重定向并向其返回空值,进一步进行技术欺骗,杜绝启动器重新显示所述待隐藏目标应用的快捷方式图标的可能,使目标应用一经隐藏,除非人为修改,否则便不能再由启动器扫描发现而显示相应的图标,导致目标应用重新暴露于桌面。由此可见,本发明实现了目标应用在启动器中的彻底隐藏效果。
[0051]2、本发明能获得彻底的隐藏效果:由于启动器往往先于其它应用程序启动,在其启动过程中,将自行扫描系统应用和用户应用,扫描后即将这些应用的快捷方式图标予以显示,因此,本发明进一步通过为自身配置为底层进程和将自身配置为在开机时先于启动器启动,启动速度非常迅速,因而能抢占系统主动权,进而可以先于启动器为各个待隐藏的目标应用发送用于欺骗启动器的广播消息,从而确保启动器自其被加载时起,即无法显示所述待隐藏目标应用的快捷方式图标,避免在开机时启动器进行不当的回显,实现了整个操作系统运行周期中,除非人为修改设置,均能确保所述目标应用不至于被启动器暴露,显然这种隐藏效果更为彻底。
[0052]3、本发明不影响被隐藏的目标应用的正常使用:本发明虽然借助了 Hook技术,但无需改变目标应用和启动器自身的任何内容,更无需通过寄生应用来实现对该目标应用的调用,只需在需要使用该目标应用时,改变该目标应用的隐藏状态设置信息,而该隐藏状态设置信息显然只有隐藏和显示两种状态,用户一旦将该目标应用从隐藏状态改变为显示状态,本发明便可依据这一改变发送该目标应用已添加的广播消息,启动器即能捕获这一广播消息,进而触发启动器重新顺利地获取和更新桌面上的应用程序快捷方式图标,使之前已被隐藏的目标应用的快捷方式图标再度显示在桌面上。
[0053]由以上的分析可知,本发明能够彻底、安全、可靠地实现应用程序在启动器中的隐藏效果。
[0054]本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

【专利附图】

【附图说明】
[0055]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0056]图1是本发明的应用隐藏控制方法的流程原理图,主要示出其用于实现图标隐藏的控制流程;
[0057]图2是本发明的应用隐藏控制方法中步骤Sll和步骤SlT可共用的更为具体的流程原理图;
[0058]图3是本发明的应用隐藏控制方法的流程原理图,主要示出其用于实现图标回显的控制流程;
[0059]图4是本发明的应用隐藏控制装置的原理框图,该框图一并示例出该装置与启动器之间的连接关系,其中以虚线表示省略了广播单元与启动器之间的系统广播机制的表达。

【具体实施方式】
[0060]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0061]本【技术领域】技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
[0062]本【技术领域】技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
[0063]本【技术领域】技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS (Personal Communicat1ns Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA (Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS (Global Posit1ning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
[0064]本【技术领域】技术人员可以理解,这里所使用的服务器、云端、远端网络设备等概念,具有等同效果,其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云。在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。本发明的实施例中,远端网络设备、终端设备与WNS服务器之间可通过任何通信方式实现通信,包括但不限于,基于3GPP、LTE、WIMAX的移动通信、基于TCP/IP、UDP协议的计算机网络通信以及基于蓝牙、红外传输标准的近距无线传输方式。
[0065]本领域技术人员应当理解,本发明所称的“应用”、“应用程序”、“应用软件”以及类似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任何形式的终端所限制。
[0066]本发明以下即将描述的一种应用隐藏控制方法和装置所实施的应用场景,是安装在移动终端上的基于Android操作系统的运行环境。
[0067]为了说明本发明的实施,本发明试图结合计算机程序的静态和动态两个方面进行描述,所谓静态方面,是指程序安装包、文件、数据库等存储于媒介的存储对象;所谓动态方面,是指被调入内存中执行的动态对象,包括但不局限于进程、线程、所用到的数据等。鉴于计算机软件技术的这些特点,不应将本发明所述及的各个方法、步骤、子步骤、装置、单元、模块等,孤立地理解为仅静态或仅动态的方面,本领域技术人员对此应当知晓。故而,本领域技术人员应当能够依据本发明有关静态的表述而将其对应到动态的进程活动,或者依据本发明有关动态的进程活动对应到其静态的表现形式,建立起静态与动态两方面的必然性关联,以此为基础来理解本发明。
[0068]本领域技术人员应当可以预见,由于本发明所揭示的技术涉及到对Android系统级别资源的调用,因而,在实施本发明前需要为以本发明实例化的应用程序的运行获取Root权限,但获取Root权限本身属于现有且公知的先决技术,现实中移动终端用户已经具备自行获取Root权限的操作能力和自觉意识。此外,部分开明的移动终端在其机器出厂时已经为用户开放了系统的Root权限,或者故意为获取Root权限提供了便利手段。因此,不应将其视为影响本发明实施的必要构件。
[0069]基于上述的先导性的说明,可以知晓,本发明所要揭示的应用隐藏控制方法及其相应的装置,是实现本发明的相对应的两个方面,并非相互孤立的两个方案。
[0070]本发明的实施,从其运行的视角,需要注意两个层次,其一是先于启动器加载运行的视角,其二是在启动器加载后运行的视角,这两个视角代表了本发明解决技术问题的不同深度。两个层次中,前者虽然使后者取得更佳的效果,但后者并不必然依赖于前者,而取得其应有的独立性,换言之,后者可以独立解决本发明要解决的主要技术问题。后文的描述中,出于流畅和简明的考虑,即使未必周密详述这两个层次的细节联系,由于本领域技术人员掌握了本领域普通技术知识,因而,本领域技术人员根据此处的先导说明也应当足以完全理解后文所揭示的技术内容。
[0071]本发明的应用隐藏控制方法,从技术原理上,采用了类似技术欺骗的手段,通过欺骗启动器进程而实现目标应用的快捷方式图标的隐藏和显示控制。通过分析Android启动器(Launcher)的代码便可知晓其运行机理。Android系统的Home应用程序Launcher是由ActivityManagerService 启动的,而 ActivityManagerService 和 PackageManagerService一样,都是在开机时由SystemServer组件启动的,SystemServer组件首先是启动PackageManagerService,由它来负责安装系统的应用程序,系统中的应用程序安装好了以后,SystemServer组件接下来就要通过ActivityManagerService来启动Home应用程序Launcher 了,Launcher在启动的时候便会通过PackageManagerService把系统中已经安装好的应用程序以快捷方式图标的形式展示在桌面上。将图标展示到桌面的过程,会调用querylntentActivities 和 getPackagelnfo 两个函数,querylntentActivities 用于获取所有注册了 act1n.MAIN和act1n.Launcher的活动组件(Activity)的应用程序,进一步通过getPackagelnfo可以获得包括应用程序包名在内的相关应用程序参数。这两个参数如果得到有效数据,便能够将图标展示到桌面上。除此之外,在整个启动器的进程生命周期中,当其接收到android, intent, act1n.PACKAGE_REMOVED (表不某一指定包名的应用已经被删除)或android, intent, act1n.PACKAGE_ADDED (表示某一指定包名的应用已经被添加)广播消息之后,也会调用上述两个函数以期展示已安装的目标应用。因此,通过给启动器发送上述已删除的广播消息,便可让启动器以为广播消息中所包含的指定包名的已经被删除,进一步启动器调用querylntentActivities和getPackagelnfo两个函数企图进行桌面展示内容更新时,本发明又将截获该两个函数,针对该目标应用向该两个函数返回表征应用已经不存在的空值,由此让启动器彻底误信所述目标应用不存在,而不再在桌面上展示该目标应用的快捷方式图标(如果图标之前已经存在,将被启动器删除)。而在用户需要正常使用该目标应用,不再隐藏该目标应用时,本发明可发送android, intent, act1n.PACKAGE_ADDED广播消息给启动器,除此之外不再对启动器的运行过程施加任何干涉,启动器由此便可以调用querylntentActivities和getPackagelnfo两个函数获得该目标应用的特征信息,将其快捷方式图标正常显示到桌面上。
[0072]本发明的应用隐藏控制方法,请参阅图1,基于上述的技术原理分析,通过如下步骤来加以实施:
[0073]步骤S11、确定待隐藏的目标应用。
[0074]确定待隐藏的目标应用,需要结合前文中关于本发明的两个层次的考虑,也即启动器成功加载之前的开机启动阶段的考虑,和启动器已运行情况下的考虑。前者与后者的最大的特征区别在于,在启动器成功加载之前,需要构造实施本发明的运行环境,使得以本发明所构造的进程能够先于启动器被加载而优先抢占系统底层控制权,以便在启动器未调用访问指令时便已经由本发明实施了目标应用隐藏;而后者因启动器已经启动,便可不必再考虑启动器加载先后的问题。事实上,在本发明所揭示的实施例中,这两个层次的结合为同一实施例进行描述的。
[0075]具体而言,确定待隐藏的目标应用的步骤,其目的是为了获取用户期望隐藏的目标应用的具体对象,获得该目标应用的包名,作为后续发送广播消息的参数。请参阅图2,该步骤通过以下的细分步骤实现:
[0076]步骤S111、基于Root权限向系统注册基于系统底层通信机制的服务进程。
[0077]本实施例所称的服务进程,是指在系统开机时,由诸如su.apk之类的植入模块获取Root权限之后,通过执行shell命令向系统注册一个可以利用底层通信机制进行通信的通信服务进程。该服务进程基于Android系统所提供的Binder机制,向System Manager注册,例如可通过系统调用函数ServiceManager.addService来实现插入操作,通过Android提供的固有的Binder机制,在通信服务进程与其监听的外部用户进程之间建立C/S架构的沟通管道。所述通信服务进程通过上述的配置,已经成为系统级别的服务进程级别,其权限显然高于其他外部用户进程甚至,因此该通信服务进程可以作为通信基础,为其他调用它的进程提供系统底层通信保障,完成系统与其他调用它的进程之间的通信连接。
[0078]步骤S112、基于Root权限启动用户进程,用户进程绑定与服务进程的通信。
[0079]进一步,为了配合所述通信进程,在系统的前端安装一应用程序,在系统开机时,即可启动该应用程序,该应用程序启动后便构造出用户进程,该用户进程利用Binder机制,建立其与所述通信服务进程之间的C/S沟通机制。由于这种沟通机制是较为底层的,并且已经获得Root权限,因此,用户进程能够通过与所述通信服务进程的通信,来由所述通信服务进程直接或间接执行较为底层的操作功能。需要指出的是,所述用户进程既可以由所述通信服务进程来启动,也可以由例如前述的su.apk包的进程来启动,无论是谁启动该用户进程,均是以获得Root权限为基础而实现的。
[0080]步骤S113、服务进程通过用户进程获取数据。
[0081]安排在前一步骤启动用户进程的目的,在于确保所述服务进程能够在开机时先于启动器获取由所述用户进程获取并生成的用户设置数据,特别是指其中涉及已安装应用的隐藏状态设置信息以及相应的包名等数据,以便服务进程可以据此确定待隐藏目标应用。
[0082]通过上述各步骤,可以确定待隐藏的目标应用,这一过程的描述是基于一次开机过程进行的。然而,本领域技术人员结合前述有关两个层次的描述可以知晓,在另外的实施例中,可以不考虑上述通信服务进程是否先于启动器的加载而启动,只是从启动器已经完成启动的视角来考虑所述用户进程的活动。
[0083]对于一次开机过程而言,所述用户设置数据是已经由所述用户进程采集存储在本地的数据。开机过程中,启动器成功加载之前,用户进程的前端活动组件(Activity)未能显示,因为这一过程中不能通过用户进程来采集数据,只能通过用户进程获取之前运行时已经采集生成的数据。而在启动器加载完成后,也即用户进程在其能正常显示用户界面时,会通过一活动组件提供一用户界面,在用户界面提供一已安装应用列表,用户选中某个已安装应用时,被系统视为将该已安装应用标记为待隐藏状态;当用户去除其选中状态时,则被系统视为将该已安装应用标记为待显示状态。借助该用户界面,可以通过多种公知方式来实现用户界面内容布局设计和用户数据采集方式设计,恕不赘述。
[0084]这里所称的已安装应用,既包括系统自带的应用,其安装包存储于system/app目录中,也包括用户自装的第三方应用,其安装包存储于data/app目录中。不管何种类型,用户进程均可以获取与该应用有关的信息,尤其是其中的包名。例如,通过querylntentActivities 函数来获取注册有 act1n.MAIN 和 act1n.LANUCHER 的活动组件(意味着此一活动组件的快捷方式图标将被显示到桌面上)的安装包,继而通过getPackagelnfo来获取这些安装包的包名、版本号之类的信息等,由此便在理论上获取了所有能被桌面显示图标的已安装应用。
[0085]用户进程的活动组件将其提供的活动过程中采集的用户设置信息,建立存储表格,例如,可以为该表格建立从已安装应用的包名到用户选定的隐藏状态设置信息之间的映射关系,从而将该活动过程中采集的已安装应用包名及其相应的隐藏状态标记对应存储到该表格中。存储表格的设计方案也可以采用其它变例,例如,仅将需要隐藏的目标应用列入该存储表格,不需要隐藏的目标应用则从该表格中去除,由此,目标应用的隐藏状态设置信息即由该存储表格中包名的有无所代替。本领域技术人员应当能灵活设计此一存储表格,恕不赘述。
[0086]由此,所述服务进程,无论是在启动器被加载之前的系统开机过程中,还是在启动器被成功加载之后,均可通过与该用户进程通信,来通过该用户进程获取该表格中的用户设置信息,也即确定所述待隐藏的目标应用,以及待显示的已隐藏目标应用。服务进程最终确定其所需的目标应用的依据,是所述数据表中的包名与其相应的隐藏状态设置信息,当隐藏状态设置信息表征为待隐藏时,则将这些相应的目标应用视为待隐藏目标应用做后续处理;反之,当隐藏状态设置信息表征为待显示(非隐藏)时,则将这些相应的目标应用视为待显示的已隐藏目标应用做后续处理。
[0087]需要特别强调的是,此处已经揭示,通过所述用户进程的所述活动组件所提供的用户界面,既可用于确定待隐藏的目标应用,也可用于确定待显示的已隐藏目标应用,因此,可以知晓,步骤Slll至步骤S113既适用于确定待隐藏的目标应用,也适用于确定待显示的已隐藏目标应用,换言之,本发明确定所需的目标应用,无论是待隐藏的目标应用,还是待显示的已隐藏目标应用,均在本质上由相同的进程实现。实现确定待隐藏的目标应用的步骤,以及后续实现确定待显示的已隐藏目标应用的步骤,在本质上是同组进程活动的两个方面,其不同仅表现在所述存储表格的数据表达上。
[0088]可以看出,通过前述步骤Slll至S113的实施,本发明的关键进程,主要是指其中的服务进程和所述用于提供已采集的用户设置信息的用户进程,已经先于所述启动器的加载而进驻。在对现有市面上大量移动终端进行测试之后的数据显示,本发明的上述关键进程的启动速度,相对于启动器的加载而快,至少提前10 - 30秒的时间,因此,本发明的关键进程显然能优先于启动器而抢占系统的控制主动权。在这种情况下,在一次开机过程中,实施本发明后续的步骤,可以使得启动器不能通过相关函数显示本应被隐藏的目标应用的快捷方式图标。
[0089]在确定了待隐藏的目标应用之后,即可通过本发明的服务进程以及在必要时通过其他独立进程与所述用户进程相配合,来完成本发明的后续步骤。
[0090]步骤S12、发送表征所述目标应用已删除的广播消息。
[0091]在前一步骤中通过确定待隐藏的目标应用而获取的一个或多个目标应用的包名,将在本步骤中进一步利用。具体而言,按照前述对启动器进行技术欺骗的原理分析,本步骤通过所述用于通信的服务进程,针对所述待隐藏目标应用,向系统发送表征该目标应用已经被删除的广播消息,形式如:
[0092]sendPackageBroadcast(Intent.ACT10N_PACKAGE_REM0VED, removedPackageName,extras, null, null, removedUsers)
[0093]可以看出,发送该广播消息时,包含了该目标应用的包名removedPackageName,根据前述揭示的启动器的固有机制原理,在启动器收到该广播消息后,通过getDataStrings函数获得广播消息中的包名,会认为包名为removedPackageName的目标应用已经被删除,于是后续将该目标应用的快捷方式图标从启动器桌面中删除。多个目标应用均可以这种技术欺骗方式去操作。
[0094]但是,如前所述,启动器固有的机制中,将通过调用querylntentActivities和getPackagelnfo两个函数去实现桌面内容的更新,因此,这两个函数会再度发现所述的目标应用,从而使用户使仅以前述发送广播消息的步骤不能实现目标应用隐藏的目的。这种情况下,需要后一步骤S13辅以完善。
[0095]步骤S13、截获启动器对目标应用的访问指令,返回空值。
[0096]如前所述,由于启动器固有的机制的原因,将利用querylntentActivities和getPackagelnfo两个访问指令更新桌面内容,导致仅以前一步骤不足以实现目标应用的隐藏,因此而提供本步骤。
[0097]由此也可以看出,先前关于本发明的两个层次的关系的描述,可以在这里得到更为清楚的了解。具体而言,启动器在启动时,会自行通过上述两函数来更新其桌面图标,那么,如果未能在该两个函数的进程运行入口点之前便取得完成本发明有关进程的启动,不能抢占启动器的控制权,那么,便不能截获该两个函数的执行,即使后续启动器加载完成后仍可以截获该两个函数,但实际上启动器也仍然会闪现待隐藏目标应用的快捷方式图标,直至其下次受本发明控制而更新桌面内容为止。因此,前述所称本发明各步骤先于启动器进程的启动而执行,也可理解为先于所述启动器的所述访问指令的调用而执行,这种时序上的追求,尽管可以通过后续步骤S13的执行进程来实现,但考虑到Android固有的开机机制,一般情况下,不必另外结合其它技术手段,按照前述的进程加载过程,依然可以达到先于所述访问指令被调用而优先完成本发明的进程的加载的目的,从而也便能确保本发明各步骤的优先执行。对本发明前述所称两个层次的理解,至此应较为完整和系统。不处理启动器与本发明的进程所实施的步骤之间的先后关系,依靠本发明的三个步骤所执行的基本动作,依然可以实现图标隐藏功能,但处理了这一先后关系,则可使图标隐藏效果更为彻底。
[0098]本领域技术人员应当知晓,尽管前一步骤为了取得效率上的优势而由本发明的通信服务进程实施,但是,各步骤由何一进程、由多少进程具体实施,理论上可由本领域技术人员实现,不应以实施某步骤的进程的不同而误解本发明的实现。同理,本领域技术人员应当知晓,本步骤的实施,既可由所述服务进程执行,也可以由能与该服务进程通信的独立监控进程执行。考虑到截获访问指令的操作,仅对隐藏目标应用实施,而不需针对显示已隐藏目标应用实施,因此,也可优先考虑利用一与所述服务进程通信的独立进程来实现。但是,后续为说明的简便,统一将之理解为由服务进程来实现本步骤。
[0099]有鉴于此,本发明的服务进程,借助公知的Hook技术,采用钩子函数挂钩并劫持所述启动器进程中的querylntentActivities和getPackagelnfo两个函数。当服务进程监听到启动器进程的入口点到达上述两个函数时,即重定向为执行相应的钩子函数。在钩子函数内部,实现所述两个函数的正常功能之外,与所述待隐藏目标应用相应的访问结果将被返回空值,然后返回启动器进程继续执行该两个函数的后续指令。此举对于启动器而言,整个进程的执行过程非常流畅,并不知晓自身被劫持,因而,启动器仍然能够获得稳定的运行效果。本领域技术人员应当理解,本发明所称的空值,应当理解为包括常量null、0在内的一切可以被启动器理解为不存在所述目标应用的任何表达方式,而不应仅仅理解为所述null,O之类的固有表达内容。
[0100]通过上述钩子函数的处理,启动器进程所实施的任何涉及上述两个访问指令的调用,相对于所述目标应用而言,启动器的调用结果必然无功而返。因此,启动器进程最终获得的桌面待显示应用列表中,不包括所述的待隐藏目标应用,其桌面上不再显示该些目标应用的图标。对终端使用者而言,由于在桌面上查找不到该目标应用,无法据以启动,由此便起到了隐藏应用程序的效果,对个人隐私进行了很好的保护。
[0101]通过以上步骤Sll、S12、S13的结合,可以很好地实现对选定目标应用的隐藏效果,其快捷方式图标不会启动器桌面上显示。但是,用户通常并非为了永久性地隐藏该应用,通常期望在需要时重新显示已隐藏的目标应用。因此,本发明进而结合图3提供如下步骤实现这种控制目的:
[0102]步骤S11’、确定待显示的已隐藏目标应用。
[0103]请回顾前述步骤Sll所揭示的内容。本发明通过位于系统应用层的所述用户进程来提供用户界面,在用户界面上显示已安装应用列表,来获取用户是否隐藏或显示已安装应用的数据。该用户界面如前所述可以由同一活动组件实现,因此,该活动组件在实质上提供了针对某个目标应用的可视化状态进行切换控制的功能。如前所述,用户如果需要去除对某个已隐藏目标应用的隐藏设置,可以去除对该目标应用的选定,由此,所述存储表格中,相应的目标应用的包名便会被赋以可供显示的标记,也就是改变其相应的隐藏状态设置信息。因此,可以知晓,本步骤对于本发明所构造的进程而言,是可以理解为与所述确定待隐藏目标应用的步骤为同一综合步骤的不同方面的。
[0104]S12’、发送表征已隐藏目标应用已添加的广播消息。
[0105]前一步骤Sll’与所述步骤Sll为一体两面,在其中已经确定了待显示的已隐藏目标应用,在这个基础上,本步骤需要进一步解决的问题,是如何使得已隐藏目标应用去除其隐藏状态。为了实现这一效果,在前一步骤中通过确定待显示的已隐藏目标应用而获取的一个或多个目标应用的包名,将在本步骤中进一步利用。具体而言,按照前述对启动器进行技术欺骗的原理分析,本步骤通过所述用于通信的服务进程,针对所述待显示的已隐藏目标应用,向系统发送表征该目标应用已经被添加的广播消息,形式如:
[0106]sendPackageBroadcast(Intent.ACT1N_PACKAGE_ADDED, addedPackageName, extras, null, null, addedUsers)
[0107]可以看出,发送该广播消息时,包含了该目标应用的包名addedPackageName。根据前述揭示的启动器的固有机制原理,在启动器收到该广播消息后,通过getDataStrings函数获得广播消息中的包名,会认为包名为addedPackageName的目标应用已经被安装,于是后续便将该目标应用的快捷方式图标回显到启动器桌面中。同理,多个目标应用均可以这种技术欺骗方式去操作。
[0108]继而,如前所述,启动器固有的机制揭示,启动器将通过调用querylntentActivities和getPackagelnfo两个函数去实现桌面内容的更新。不同于前述的需求,实现已隐藏目标应用的快捷方式图标的回显,并不需要Hook技术的参与,而完全依赖于启动器自身的固有执行过程即可。即使步骤S13所述的钩子函数再度截获该两个访问指令,因为钩子函数的依据是用户进程提供的用户设置信息(存储表格),而用户设置信息中已经改变了该原本已隐藏的目标应用的状态为可显示,因此,钩子函数也不会阻止前述两个访问指令对所述已显示且曾隐藏的目标应用的访问,从而确保启动器无障碍地回显所述待显示且曾隐藏的目标应用的快捷方式图标。
[0109]结合以上的分析,本领域技术人员可以理解,在程序设计阶段,本发明只需通过分支语句,即可使本发明隐藏、显示目标应用的两方面的功能在同一个程序及其相应的进程中实现。
[0110]上文详细揭示了本发明的应用隐藏控制方法的具体实例,本领域技术人员自然知晓,依照该方法可以提供本发明的一种应用隐藏控制装置,该装置以模块化和基于过程的思维来实现,与该方法之间存在对应关系,且能达到相同的技术效果。因此,以下即将进行的针对该装置的描述,也将沿用前述方法的概念及原理进行说明。
[0111]请参阅图4,本发明的应用隐藏控制装置主要包括确定单元11、广播单元12以及监控单元13。所述的确定单元11,用于可选择性地执行步骤Sll和步骤S11’,以对应确定待隐藏的目标应用和待显示的已隐藏目标应用;所述的广播单元12,用于可选择性地执行步骤S12和S12’,以对应发送表征所述目标应用已删除的广播消息和发送表征所述已隐藏目标应用已添加的广播消息,发送已添加的广播消息能使启动器回显所述已隐藏目标应用的快捷方式图标;所述的监控单元13,用于执行步骤S13,截获启动器进程对所述目标应用的访问指令,针对所述目标应用对应向启动器进程返回空值,以在启动器2中隐藏该目标应用的快捷方式图标。此处所称的可选择性地执行,不是二选一,而是结合前文关于方法的详细揭示,指基于具体目标应用是否需要隐藏而对应适应不同步骤。通过结合本发明的应用隐藏控制方法的说明,相信本领域技术人员对此完全可以理解。
[0112]相应的,所述确定单元11具体包括:
[0113]注册模块,用于执行所述步骤SI 11,被配置为基于Root权限向系统注册基于系统底层通信机制的服务进程;
[0114]启动模块,用于执行所述步骤S112,被配置为基于Root权限启动用户进程,使用户进程绑定与服务进程的通信;
[0115]根据步骤S113的逻辑,所述服务进程通过用户进程获取已安装应用的包名及其对应的隐藏状态设置信息,以依据所述隐藏状态设置信息确定所述待隐藏的目标应用或确定待显示的已隐藏目标应用。
[0116]为便于程序实现考虑,所述广播单元12与监控单元13可以合并为同一功能模块,以使两部分功能体现到同一所述通信服务进程中。当然,所述监控单元13也可为独立进程,以区别并独立于所述的通信服务进程。同理,所述注册模块与所述启动模块也可实现为同一功能模块,例如,可以借助所述su.apk实现。
[0117]所述确定单元11中,所述用户进程提供用户界面,用于获取已安装应用的包名并显示已安装应用列表,以接收用户针对其中的已安装应用输入的隐藏状态设置信息;所述服务进程依据所述隐藏状态设置信息确定所需的目标应用。同理,所述已安装应用包括系统应用和/或第三方应用。为便于通过同一活动组件同时获取待显示目标应用和待隐藏目标应用,所述确定单元11表现在程序实现中,可实现于同一活动组件。进一步,根据前述方法所揭示,所述确定单元11通过确定目标应用的包名而确定所需的目标应用,所述广播消息包含有目标应用的包名。
[0118]以上简略地给出与本发明的应用隐藏控制方法相对应的应用隐藏控制装置,但本领域技术人员应当理解,该方法所实现的所有活动,均对应性地适用于该装置的各个相应功能模块中,因此,本发明的装置无疑是本发明的方法的模块化实现方案,两者是同一技术方案的不同角度的实现。
[0119]综上所述,本发明能够在启动器中彻底隐藏应用程序,且不影响应用程序的后续正常运行。本发明不仅可以应用于Android操作系统中,还可以用于具有类似架构和机制的操作系统环境中。
[0120]以上所述仅是本发明的部分实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种应用隐藏控制方法,其特征在于,包括以下步骤: 确定待隐藏的目标应用; 发送表征所述目标应用已删除的广播消息; 截获启动器进程对所述目标应用的访问指令,针对所述目标应用对应向启动器进程返回空值,以在启动器中隐藏该目标应用的快捷方式图标。
2.根据权利要求1所述的应用隐藏控制方法,其特征在于,该方法还包括如下步骤: 确定待显示的已隐藏目标应用; 发送表征所述已隐藏目标应用已添加的广播消息,以在启动器中显示该目标应用的快捷方式图标。
3.根据权利要求1或2所述的应用隐藏控制方法,其特征在于,所述确定待隐藏的目标应用的步骤,具体包括如下子步骤: 基于Root权限向系统注册基于系统底层通信机制的服务进程; 基于Root权限启动用户进程,用户进程绑定与服务进程的通信; 服务进程通过用户进程获取已安装应用的包名及其对应的隐藏状态设置信息,以依据所述隐藏状态设置信息确定所述待隐藏的目标应用或确定待显示的已隐藏目标应用。
4.根据权利要求3所述的应用隐藏控制方法,其特征在于,所述确定目标应用的步骤,通过所述用户进程提供用户界面,用于获取已安装应用的包名并显示已安装应用列表,以接收用户针对其中的已安装应用输入的隐藏状态设置信息,以供服务进程依据所述隐藏状态设置信息确定所需的目标应用。
5.根据权利要求2所述的应用隐藏控制方法,其特征在于,所述确定待隐藏的目标应用的步骤,以及所述确定待显示的已隐藏目标应用的步骤,合并于同一活动组件,通过调用该活动组件而实现。
6.根据权利要求1或2所述的应用隐藏控制方法,其特征在于,通过确定目标应用的包名而确定所需的目标应用,该包名被包含在所述广播消息中进行发送。
7.根据权利要求1所述应用隐藏控制方法,其特征在于,所述截获访问指令并返回空值的步骤,采用钩子函数挂钩所述访问指令的方式实现。
8.根据权利要求7所述的应用隐藏控制方法,其特征在于,所述对目标应用的访问指令,包括querylntentActivities、getPackagelnfo两个函数中任意一个或多个。
9.一种应用隐藏控制装置,其特征在于,包括: 确定单元,用于确定待隐藏的目标应用; 广播单元,用于发送表征所述目标应用已删除的广播消息; 监控单元,用于截获启动器进程对所述目标应用的访问指令,针对所述目标应用对应向启动器进程返回空值,以在启动器中隐藏该目标应用的快捷方式图标。
10.根据权利要求9所述的应用隐藏控制装置,其特征在于,该装置中: 所述确定单元还用于确定待显示的已隐藏目标应用; 所述广播单元还用于发送表征所述已隐藏目标应用已添加的广播消息,以在启动器中显示该目标应用的快捷方式图标。
【文档编号】G06F21/60GK104376268SQ201410692304
【公开日】2015年2月25日 申请日期:2014年11月26日 优先权日:2014年11月26日
【发明者】杨威, 曹阳, 窦文科, 符传坚, 藏春晖 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1