文档章节

在Android手机上实现应用屏蔽

Cundong
 Cundong
发布于 2014/06/29 16:18
字数 351
阅读 2872
收藏 20

在Android手机上,很多App都实现了应用屏蔽功能。比如,360手机卫士可以在用户启动其他应用程序的时候弹出一个验证窗口来实现应用程序的加密,「我要当学霸」、「我要早睡」、「番茄土豆」可以在用户设置的时间段里在用户打开其他应用程序的时候弹出一个不可操作页面。

研究了一下这几个应用,发现实现原理其实挺简单的:通过一个后台Service来监控位于当前Task最顶端的Activity名字是否位于要屏蔽的List中,如果位于task最顶部的Activity(即用户刚刚打开的那个Activity)包含在需要屏蔽的List中,则弹出一个不可操作Activity,用户在当前Activity只能做制定的事情,比如点击Back返回到HOME界面,或者只能输入密码,或是必须发布一些自虐内容到微信朋友圈等等。

获取当前Task最顶端的Activity的方法很简单,Android已提供了Api:

ActivityManager mActivityManager=(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ComponentName topActivity = mActivityManager.getRunningTasks(1).get(0).topActivity;

注:

调用该Api,需要配置 

 <uses-permission android:name="android.permission.GET_TASKS" />

权限。

在屏蔽页,点击Back键,回到HOME页:

Intent MyIntent = new Intent(Intent.ACTION_MAIN);
MyIntent.addCategory(Intent.CATEGORY_HOME); 
startActivity(MyIntent);


下载:demo


© 著作权归作者所有

共有 人打赏支持
Cundong
粉丝 184
博文 28
码字总数 30973
作品 0
海淀
加载中

评论(4)

Cundong
Cundong

引用来自“吴大壮”的评论

下载了demo,为什么我点击了需要屏蔽的程序还是可以打开呢?

引用来自“陈哈哈coding”的评论

可能是3个原因导致的 1、是否设置了要屏蔽的软件 2、Demo中用来监控task的Service可能被杀掉 3、在Android5.0,获取task列表的方法失效。详见https://github.com/cundong/AppBlock/issues/1
感谢你!我去看下api
陈哈哈coding
陈哈哈coding

引用来自“吴大壮”的评论

下载了demo,为什么我点击了需要屏蔽的程序还是可以打开呢?
可能是3个原因导致的 1、是否设置了要屏蔽的软件 2、Demo中用来监控task的Service可能被杀掉 3、在Android5.0,获取task列表的方法失效。详见https://github.com/cundong/AppBlock/issues/1
吴大壮
吴大壮
下载了demo,为什么我点击了需要屏蔽的程序还是可以打开呢?
大飞哥2099
大飞哥2099
mark
Android基础之应用程序组件

Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全。Android应用程序组件的主要类型有:活动(Activity),服务...

柳哥
2014/11/28
0
0
android应用开发全程实录-实现甩动拨打和挂断电话

android应用开发全程实录-实现甩动拨打和挂断电话 今天继续给大家带来《Android应用开发全程实录》中的章节,这部分是讲传感器中的一个实例。 通过上面的例子我们学会了如何获得某种类型的传...

紫地瓜
2012/10/26
0
0
Android P 版本号为 9,第三个开发者预览版有这些变化

近日,Google 如期放出了 Android P 的第三个开发者预览版(以下简称 DP3)。DP3 主要面向应用开发者,将该版本操作系统的 API 等级正式确定为 API level 28,开发者可以借助相关的 SDK 面向...

h4cd
06/10
0
0
安卓5.0以后获取顶层应用包名的方法(6.0,7.0,8.0均可用)

安卓5.0屏蔽了getRunningAppProcesses@ActivityManager方法,因此不能使用该方法完成获取顶层应用包名的需求。若要在5.0及以后的版本上获取顶层app的包名,可以使用Context的“usagestats”服...

积木oooooo
07/24
0
0
js在微信、微博、QQ、Safari唤起App的解决方案

背景 最近在做微信、QQ、微博中使用js唤起App,之前也做过类似的功能,不过比较粗糙,考虑的情况不太全,而且那已经是很久之前的事情了,很多技术都已过时,现在有体验更好,功能更加完善的唤...

发布于
08/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
10
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
20
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部