一种禁止应用自启动的控制方法及系统与流程

文档序号:11133674阅读:354来源:国知局
一种禁止应用自启动的控制方法及系统与制造工艺

本发明涉及终端设备技术领域,特别涉及一种禁止应用自启动的控制方法及系统。



背景技术:

目前,随着通信技术和终端技术的快速发展,移动电话、智能电话、笔记本电脑、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)等终端的使用越来越广泛。在现有的终端设备开机启动过程中,系统开机完成时,会发送开机广播给已注册开机广播的应用,接收到所述开机广播的应用会根据所述开机广播进行自启动。

现有的禁止应用自启动的方法是通过删除所述已注册开机广播的应用列表内的应用,使得对应的应用无法接收开机广播进而无法自启动。但是,每个应用接收的消息种类不尽相同,并且同类应用可以互相唤醒,使得应用可以再次开机自启动,因而,现有的禁止应用自启动的控制方法中存在禁用不彻底的问题。另外,现有的自启动控制方法需要拦截多种广播和服务,若其他程序改变了所述广播和服务的类型,那么会存在无法阻止应用自启动的问题。

因而现有技术还有待改进和提高。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术的不足,提供一种禁止应用自启动的控制方法及系统,以解决现有的禁止应用自启动的控制方法中存在禁用不彻底的问题。

为了解决上述技术问题,本发明所采用的技术方案如下:

一种禁止应用自启动的控制方法,其包括:

当系统启动时,将所述强行停止操作的权限提升至系统应用的权限;

接收到系统开机/关机广播时,获取预设的需要禁止应用自启动的包名列表;

根据所述包名列表对相应的应用执行用于将应用状态修改为新安装状态的强行停止操作。

所述禁止应用自启动的控制方法,其中,所述接收到系统开机/关机广播时,获取需要禁止的应用的包名列表之前包括:

预先注册接收系统开机/关机广播,并实时监听系统开机/关机广播。

所述禁止应用自启动的控制方法,其中,所述接收到系统开机/关机广播时,获取需要禁止的应用的包名列表之前包括:

获取终端设备的应用列表,并提供设置界面显示所述应用列表,以供用户基于所述应用列表设置各应用对应的自启动状态;

监听用户基于所述设备界面触发的操作指令;

当所述指令为禁止应用自启动指令时,将所述指令对应的应用的包名添加至所述包名列表。

所述禁止应用自启动的控制方法,其中,所述接收到系统开机/关机广播时,获取需要禁止的应用的包名列表之前还包括:

当所述指令为启动应用自启动指令时,将所述指令对应的应用的包名从所述包名列表中删除。

所述禁止应用自启动的控制方法,其中,所述根据所述包名列表对相应的应用执行用于将应用状态修改为新安装状态的强行停止操作,以使得所述应用不接收开机广播具体包括:

利用java的反射机制从ActivityManager中调取隐藏的forceStopPackage函数的地址;

获取所述包名列表中应用的包名,并根据所述包名对相应的应用执行forceStopPackage函数进行强行停止操作。

一种禁止应用自启动的控制系统,其包括:

提升模块,用于当系统启动时,将所述强行停止操作的权限提升至系统应用的权限;

获取模块,用于接收到系统开机/关机广播时,获取预设的需要禁止应用自启动的包名列表;

执行模块,用于根据所述包名列表对相应的应用执行用于将应用状态修改为新安装状态的强行停止操作,以使得所述应用不接收开机广播。

所述禁止应用自启动的控制系统,其还包括:

注册模块,用于预先注册接收系统开机/关机广播,并实时监听系统开机/关机广播。

所述禁止应用自启动的控制系统,其还包括:

提供模块,用于获取终端设备的应用列表,并提供设置界面显示所述应用列表,以供用户基于所述应用列表设置各应用对应的自启动状态;

监听模块,用于监听用户基于所述设备界面触发的操作指令;

添加模块,用于当所述指令为禁止应用自启动指令时,将所述指令对应的应用的包名添加至所述包名列表。

所述禁止应用自启动的控制方法,其还包括:

删除模块,用于当所述指令为启动应用自启动指令时,将所述指令对应的应用的包名从所述包名列表中删除。

所述禁止应用自启动的控制系统,其中,所述执行模块具体包括:

调取单元,用于利用java的反射机制从ActivityManager中调取隐藏的forceStopPackage函数的地址;

执行单元,用于获取所述包名列表中应用的包名,并根据所述包名对相应的应用执行forceStopPackage函数进行强行停止操作。

有益效果:与现有技术相比,本发明提供了一种禁止应用自启动的控制方法及系统,所述方法包括:接收到系统开机/关机广播时,获取预设的需要禁止应用自启动的包名列表;根据所述包名列表对相应的应用执行用于将应用状态修改为新安装状态的强行停止操作。本发明采用ForceStopPackage函数将需要禁止的应用程序的状态修改为新安装状态,使得该应用程序不接收开机广播,从而禁止应用程序的自启动。所述应用程序只有在用户主动点击运行时才会启动,解决里现有的禁止应用自启动的控制方法中存在禁用不彻底的问题。

附图说明

图1为本发明提供的禁止应用自启动的控制方法较佳实施的流程图。

图2为本发明提供的一种禁止应用自启动的控制系统的结构原理图。

具体实施方式

本发明提供一种禁止应用自启动的控制方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,模块”、“部件”或“单元”可以混合地使用。

终端设备可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。

本发明所提供的方法可以内置于终端设备的系统内,也可以制成一个应用程序APP。下面,以APP为例加以说明。

下面结合附图,通过对实施例的描述,对发明内容作进一步说明。

请参照图1,图1为本发明提供的禁止应用自启动的控制方法的较佳实施例的流程图。所述方法包括:

S100、当系统启动时,将所述强行停止操作的权限提升至系统应用的权限。

具体地,系统的应用程序的安装状态只有系统权限才能进行修改。从而,当系统启动时,需要对强行停止操作的权限进行提升。在实际应用中,所述强行停止操作可以采用一个应用程序的方式进行。那么,在系统启动时,需要对应用程序的权限进行提升,以使得所述应用程序具有系统应用的权限。所述提升系统权限可以分为两种情况。

第一种为:当APP随系统一起安装时,将APP的程序安装在系统目录里面,使得所述APP的程序与系统程序的签名相同,然后在androidmenifest.xml声明上面的权限后,可以取得所述权限。

第二种为:所述APP作为普通应用安装,那么当提升权限时,需要拦截系统PackageManagerService的grantPermissionsLPw函数;对权限的判断,判断所述APP申请的权限是否对用户有危险,如果有危险,则通过修grantPermissionsLPw函数使得android系统判定<uses-permissionandroid:name="android.permission.FORCE_STOP_PACKAGES"/>为安全权限。所述修改权限的具体修改的代码如下:

S200、接收到系统开机/关机广播时,获取预设的需要禁止应用自启动的包名列表。

具体地,终端设备在开机/关机时会发送关机广播至订阅关机广播的各应用程序,订阅了开机/关机广播的应用可以接收到系统开机/关机广播。所述接收到系统开机/关机广播指的是接收到系统在关机时,向应用发送的开机/关机广播。

所述接收到系统开机/关机广播指的是APP接收到系统开机/关机广播。由于终端设备仅向订阅开机/关机广播的应用发送关机广播,从而在接收到系统开机/关机广播之前还包括一个注册过程为:注册接收系统开机/关机广播,并实时监听系统开机/关机广播。具体地,系统内的应用可以通过建立接收器,将所述接收器注册为对开机/关机广播感兴趣的对象。在系统开机/关机时,系统通过查询已注册开机/关机广播的应用,将开机/关机广播发送给注册开机/关机广播的应用,从而APP可以接收到系统开机/关机广播。值得说明的,本方法中采用关机广播和开机广播都是可以实现的。但是优选采用关机广播,可以避免在开机时对应用自启动进行控制而造成开机速度慢,给用户的使用带来不变的问题。

所述获取预设的需要禁止应用自启动的包名列表指的是通过遍历SharedPreferences来回去存储于SharedPreferences中的应用的包名列表,并根据所述包名列表进行后续操作。所述SharedPreferences中的包名列表为通过android的SharedPreferences记录下来的需要禁止的应用程序的包名,所述应用程序为用户根据需要设定。在获取预设的需要禁止应用自启动的包名列表之前还包括一个设置需要禁止自启动的应用的步骤,其具体包括:

S201、获取终端设备的应用列表,并提供设置界面显示所述应用列表以供用户基于所述应用列表设置各应用对应的自启动状态。

具体地,所述设置界面可以位于终端设备的设置界面内,如,手机、平板电脑等的设置界面;其也可以APP自身的设备界面。

S202、监听用户基于所述设备界面触发的操作指令。

具体地,所述操作指令可以通过提供用于自启动设置的快捷图标,供用户基于所述快捷图标触发所述操作指令;或者,也可以通过提供用于自启动设置的物理按键,供用户基于所述物理按键触发所述操作指令;或者,也可以通过提供用于自启动设置的触摸键,在接收到基于所述触摸键的触摸操作时,触发所述操作指令。

所述操作指令分为启动应用自启动指令和禁止应用自启动指令,而在接收到操作指令时,还可以包括一个判断所述操作指令为启动应用自启动指令还是禁止应用自启动指令的过程,根据所述判断的结果进行相应的操作。

S203、当所述指令为禁止应用自启动指令时,将所述指令对应的应用的包名添加至所述包名列表。

S204、当所述指令为启动应用自启动指令时,将所述指令对应的应用的包名从所述包名列表中删除。

具体地,当接收到操作指令时,通过android的SharedPreferences把需要禁止的应用程序的包名记录下来,以使得当执行强行停止操作时,读取遍历SharedPreferences中记录的包名,根据这个包名执行禁止应用程序自启动。

进一步,当所述操作指令为禁止指令时,通过android的SharedPreferences把需要禁止的应用程序的包名记录下来,并将所述包名存储于SharedPreferences中。当所述操作指令为启动指令时,通过android的SharedPreferences把需要禁止的应用程序的包名记录下来,并将所述包名从SharedPreferences中删除。

具体地,所述建立需要禁止的应用程序包名列表的不在可以通过如下代码实现:

S300、根据所述包名列表对相应的应用执行用于将应用状态修改为新安装状态的强行停止操作。

具体地,当读取到需要禁止的应用包名信息时,根据所述包名信息对该应用进行状态系统,将所述应用的状态修改为新安装应用状态,这样所述应用不接收开机广播等广播信息和服务,使得所述应用在开机时不自启动。

在本实施例中,当读取到需要禁止的应用包名信息时,通过对该应用执行强行停止操作来修改其状态信息。具体可以,首先利用java的反射机制来从ActivityManager中取出forceStopPackage函数的地址,如下:

method_=Class.forName("android.app.ActivityManager").getMethod("forceStopPackage",String.class);

再根据包名执行forceStopPackage操作将应用强制停止,使得应用的状态修改为刚安装好时的状态,从而使得应用不接收广播或者其他消息,实现了禁止应用自启动的控制。

进一步,由于forceStopPackage操作为系统隐藏的API,并且仅有系统应用才能通过反射机制获取其地址,并执行所述操作。从而,本方法还需要设置APP权限,具体为在APP程序的AndroidMenifest.xml声明程序权限<uses-permissionandroid:name="android.permission.FORCE_STOP_PACKAGES"/>。

所述根据所述包名列表对相应的应用执行用于将应用状态修改为新安装状态的强行停止操作具体包括:

S301、利用java的反射机制从ActivityManager中调取隐藏的forceStopPackage函数的地址;

S302、获取所述包名列表中应用的包名,并根据所述包名对相应的应用执行forceStopPackage函数进行强行停止操作。

进一步,为了避免由于广播消息onReceive的时间限制,而造成超时执行会产生系统ANR错误的问题。可以单独创建一个用于执行强行停止操作的服务线程,通过所述服务线程执行该操作。具体地,在接收到关机广播的时,启动所述服务线程并在该服务线程中遍历sharedprefrences中的程序包名信息,调用系统的forcestop借口,通过强行停止操作禁止应用自启动。

本发明还提供了一种禁止应用自启动的控制系统,如图2所示,其包括:

提升模块100,用于当系统启动时,将所述强行停止操作的权限提升至系统应用的权限;

获取模块200,用于接收到系统开机/关机广播时,获取预设的需要禁止应用自启动的包名列表;

执行模块300,用于根据所述包名列表对相应的应用执行用于将应用状态修改为新安装状态的强行停止操作,以使得所述应用不接收开机广播。

所述禁止应用自启动的控制系统,其还包括:

注册模块,用于预先注册接收系统关机广播,并实时监听系统关机广播。

所述禁止应用自启动的控制系统,其还包括:

提供模块,用于获取终端设备的应用列表,并提供设置界面显示所述应用列表,以供用户基于所述应用列表设置各应用对应的自启动状态;

监听模块,用于监听用户基于所述设备界面触发的操作指令;

添加模块,用于当所述指令为禁止应用自启动指令时,将所述指令对应的应用的包名添加至所述包名列表。

所述禁止应用自启动的控制方法,其还包括:

删除模块,用于当所述指令为启动应用自启动指令时,将所述指令对应的应用的包名从所述包名列表中删除。

所述禁止应用自启动的控制系统,其中,所述执行模块具体包括:

调取单元,用于利用java的反射机制从ActivityManager中调取隐藏的forceStopPackage函数的地址;

执行单元,用于获取所述包名列表中应用的包名,并根据所述包名对相应的应用执行forceStopPackage函数进行强行停止操作。

在本发明所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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