一种Android系统实现对应用部分管控的方法及设备与流程

文档序号:26003714发布日期:2021-07-23 21:21阅读:96来源:国知局

本发明涉及android系统技术领域,具体涉及一种android系统实现对应用部分管控的方法及设备。



背景技术:

android学习平板已经越来越普及了,学习平板普遍具有一个应用管控的功能,家长可以通过平板或者通过与平板绑定的手机管控某个应用的使用,这种管控一般是针对整个应用的。但是有的时候一个很好的学习应用,就是因为其中某个界面的广告太多或者有些内容不适合小孩子看,用户不得不把整个应用禁用掉。



技术实现要素:

针对现有技术的不足,本发明旨在提供一种android系统实现对应用部分管控的方法及设备。

为了实现上述目的,本发明采用如下技术方案:

一种android系统实现对应用部分管控的方法,具体过程如下:

创建一个应用管控数据库,所述应用管控数据库中每项数据包括被管控的应用的应用包名和类名两个属性值,android系统同时提供写入和查询数据库的系统接口;

activitystarter.java中的startactivitylocked()在启动activity时,首先在应用管控数据库中查询当前要启动的应用包名和activity类名是否在应用管控数据库中,如果在,就实施拦截,禁止启动该activity,否则就不拦截;

在activity.java的onresume()方法中通过判断当前的activity的应用包名和类名是否存在于应用管控数据库中,若存在就finish,否则不做任何处理。

进一步地,上述方法还包括:开发管控应用,所述管控应用具备悬浮小窗口,悬浮小窗口一直显示在任意应用之上,点击悬浮小窗口可启动一个管控界面;管控界面上放置一个已管控的类名列表、一个禁用当前界面的按钮和一个退出按钮;管控界面启动后首先获取它下面应用的应用包名,然后通过应用包名查询应用管控数据库,获得该应用包名对应的被管控的类名,并显示在已管控的类名列表中;当点击其中的某个类名时,管控界面就通过系统接口从应用管控数据库中删除该类名对应的数据项,解除对该类名的管控;当点击管控界面上的禁用当前界面按钮时,管控界面就通过系统接口把在它下面的应用的应用包名和activity类名写入应用管控数据库,然后finish自身;当管控界面finish自身后,在它下面的应用的可见activity就会跑onresume()生命周期函数;由于onresume()会判断到当前的activity的应用包名和类名已经存在于应用管控数据库中,因此会主动调用finish函数关闭自身,如果该activity是主activity,整个应用就会退出,否则就会退到该应用上一个activity界面。

更进一步地,所述管控界面是一个透明的activity。

更进一步地,当管控界面获取的在它下面的应用的应用包名为主界面包名时,将已管控的类名列表变成已管控的应用列表,并且不显示禁用当前界面的按钮,然后通过查询应用管控数据库,查询得到所有的应用包名,并根据应用包名获取每个应用的名称,然后在已管控的应用列表上显示出来;当点击其中的某个应用的名称时,管控界面会把应用管控数据库中关于该应用的所有数据清除。

一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。

一种android终端,包括处理器和存储器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序时,实现上述方法。

本发明的有益效果在于:利用本发明可以实现更加细粒度的管控方式,能够做到只对一个应用的某些界面实施管控,而另一些界面不受管控。

具体实施方式

以下将对本发明作进一步的描述,需要说明的是,本实施例以本技术方案为前提,给出了详细的实施方式和具体的操作过程,但本发明的保护范围并不限于本实施例。

本实施例提供一种android系统实现对应用部分管控的方法,具体过程如下:

创建一个应用管控数据库,所述应用管控数据库中每项数据包括被管控的应用的应用包名和类名两个属性值,android系统同时提供写入和查询数据库的系统接口;

android系统具有如下功能:

activitystarter.java中的startactivitylocked()在启动activity时,首先在应用管控数据库中查询当前要启动的应用包名和activity类名是否在应用管控数据库中,如果在,就实施拦截,禁止启动该activity,否则就不拦截;

在activity.java的onresume()方法中通过判断当前的activity的应用包名和类名是否存在于应用管控数据库中,若存在就finish,否则不做任何处理。

进一步地,上述方法还包括:开发管控应用,所述管控应用具备悬浮小窗口,悬浮小窗口一直显示在任意应用之上,点击悬浮小窗口可启动一个管控界面;所述管控界面是一个透明的activity,管控界面上放置一个已管控的类名列表、一个禁用当前界面的按钮和一个退出按钮;管控界面启动后首先获取它下面应用的应用包名,然后通过应用包名查询应用管控数据库,获得该应用包名对应的被管控的类名,并显示在已管控的类名列表中;当点击其中的某个类名时,管控界面就通过系统接口从应用管控数据库中删除该类名对应的数据项,解除对该类名的管控;当点击管控界面上的禁用当前界面按钮时,管控界面就通过系统接口把在它下面的应用的应用包名和activity类名写入应用管控数据库,然后finish自身。管控界面之所以做成一个透明的activity,主要为了用户有更好的体验,减少跳到了另一个界面的感觉。当管控界面finish自身后,在它下面的应用的可见activity就会跑onresume()生命周期函数;由于onresume()会判断到当前的activity的应用包名和类名已经存在于应用管控数据库中,因此会主动调用finish函数关闭自身。用户实时体验到管控效果,此时可能会出现两种情况,如果此activity是主activity,整个应用就会退出,否则就会退到该应用上一个activity界面。

通过上述方法的实施,当用户从主界面进入某个应用或者从某个应用中的一个activity跳到另一个activity时,activitystarter.java中的startactivitylocked()都会判断要启动的应用包名和类名是否存在应用管控数据库,如果存在,就实施拦截,禁止启动,并弹出提示告诉用户此界面被禁用。

需要说明的是,当管控界面获取的在它下面的应用的应用包名为主界面包名时,将已管控的类名列表变成已管控的应用列表,并且不显示禁用当前界面的按钮,然后通过查询应用管控数据库,查询得到所有的应用包名,并根据应用包名获取每个应用的名称,然后在已管控的应用列表上显示出来;当点击其中的某个应用的名称时,管控界面会把应用管控数据库中关于该应用的所有数据清除。此方法一方面提供了粗粒度的管控方式,也解决了禁用了主activity后没有入口解除管控的问题。

对于本领域的技术人员来说,可以根据以上的技术方案和构思,给出各种相应的改变和变形,而所有的这些改变和变形,都应该包括在本发明权利要求的保护范围之内。

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