现在通用的应用锁实现 都是启动一个service一直在后台,判断启动的应用在我们的锁内,就启动我们的锁屏界面。

public class HookService extends Service {public final static String TAG = "TestService";private ActivityManager mActivityManager;private String mLastPackageName = "";@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() {super.onCreate();mActivityManager = (ActivityManager) getSystemService("activity");checkWindow();}Handler mHandlertoast = new Handler() {@Overridepublic void handleMessage(Message msg) {LockHelper.getInstance().unLock(HookService.this, null, mLastPackageName);}};private void checkWindow() {new Thread() {@Overridepublic void run() {while (true) {fun();try {Thread.sleep(100);} catch (InterruptedException e) {}}}}.start();}private void fun() {String[] activePackages;if (Build.VERSION.SDK_INT > 20) {activePackages = getActivePackages();} else {activePackages = getActivePackagesCompat();}if (activePackages != null) {for (String activePackage : activePackages) {if (activePackage.equals("com.myth.cici")) {if (!activePackage.equals(mLastPackageName)) {mLastPackageName = activePackage;mHandlertoast.sendEmptyMessage(0);}}}}}String[] getActivePackagesCompat() {final List<ActivityManager.RunningTaskInfo> taskInfo = mActivityManager.getRunningTasks(1);final ComponentName componentName = taskInfo.get(0).topActivity;final String[] activePackages = new String[1];activePackages[0] = componentName.getPackageName();return activePackages;}private String[] getActivePackages() {final Set<String> activePackages = new HashSet<String>();final List<ActivityManager.RunningAppProcessInfo> processInfos = mActivityManager.getRunningAppProcesses();for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) {if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {activePackages.addAll(Arrays.asList(processInfo.pkgList));}}return activePackages.toArray(new String[activePackages.size()]);}
}

5.0以上使用getActivePackages();以下则使用getRunningAppProcesses。

判断获取到的活动的应用包名和我们锁住的包名是否一致,一致则还要判断是否是上次已经解锁了的,防止一直解锁,然后就启动我们的锁屏界面了。

这只是个基本的部分,正式的还需要解决很多问题。比如Service被杀死了怎么办等。

应用锁实现介绍 支持5.0相关推荐

  1. Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等...

    http://blog.51cto.com/13919357/2339446 Java 中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容 ...

  2. java B锁_Java中15种锁的介绍

    原标题:Java中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 1.公平锁 / 非公平锁 2.可重入锁 / 不可重入锁 3.独享 ...

  3. Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等

    Java 中15种锁的介绍 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类.介绍的内容如下: 公平锁 / 非公平锁 可重入锁 / 不可重入锁 独享锁 / 共享锁 互 ...

  4. Linux--自旋锁(介绍及API简介)

    Linux--自旋锁(介绍及API简介) 1.概念 2.自旋锁的使用 2.1.自旋锁 API 函数 2.2.自旋锁的死锁情况 1. 2. 2.1.解决方式 自旋锁使用注意事项 1.概念 何谓自旋锁?它 ...

  5. mysql锁级别_MySql三种级别锁的介绍及解锁命令

    MySql三种级别锁的介绍及解锁命令 (2014-04-29 11:59:37) 标签: 那末 用以 便能 页级的典型代表引擎为BDB. 表级的典型代表引擎为MyISAM,MEMORY和很久之前的IS ...

  6. Xcode8.1如何支持iOS8.0以下版本

    Xcode6.0升级到Xcode8.0,Xcode8.0升级到Xcode8.1时会删除它支持的8.0以后的版本配置文件.老项目要兼容iOS8以下也是可以另辟蹊径的. 虽然手机iOS已经到了10.1.1 ...

  7. Redis6笔记分享(从NoSQL基础到分布式锁的介绍)

    Redis6 1.NoSQL数据库简介 1.1技术发展 题外话:技术的分类 1.解决功能性的问题:Java.Jsp.RDBMS.Tomcat.HTML.Linux.JDBC.SVN 项目的本质无非是增 ...

  8. 分布式锁的介绍与实现

    本篇文章将会剖析分布式锁,以及三种实现分布式锁的方法,包括基于数据库实现.基于缓存(Redis)实现.以及基于Zookeeper实现. 文章目录 1.分布式锁 2. 分布式锁的三种实现方式 2.1 基 ...

  9. mysql行级锁 表级锁 页级锁详细介绍_MySQL行级锁、表级锁、页级锁详细介绍

    页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...

最新文章

  1. 面试题--特别是字节对齐
  2. 星际2正在等待暴雪服务器的响应,win7系统玩星际2一直停留在"正在更新暴雪启动器"页面的解决方法...
  3. C语言 · 分糖果
  4. [MIPS汇编语言]InsertionSort插入排序
  5. aix系统32位和64位切换
  6. pyqt5从子目录加载qrc文件_实战PyQt5: 045-添加资源文件
  7. 数据中心 48 V 直流供电,Vicor 如何解决“最后一英寸”电源设计难题?
  8. kindeditor在线html编辑器,kindeditor在线HTML编辑器
  9. pyCharm-激活码(2018)
  10. WPS Office Pro 2016 专业版
  11. 华为IPD 研发模式
  12. 如何修改w7计算机用户名和密码忘记,w7系统开机密码忘记解决方法_win7忘记密码如何进入系统...
  13. vs2013 c++小代码运行完了不退出的方法
  14. mysql建库图解_数据库 MySQL安装图解
  15. c语言实现学生档案管理系统
  16. Amazon Redshift - 基本介绍
  17. 2.整理华子面经--2
  18. 京东疯狂的JOYS(自动刷硬币/合成)
  19. 什么是开源?为什么要坚持开源?
  20. 请问 e^π 和 π^e 哪个大?

热门文章

  1. PostScript(PS/EPS格式)讲解
  2. vsftp账号_Vsftp用户限制
  3. LightSwitch数据源
  4. css图片缝隙问题解决方法
  5. 修改注册表导致系统进不去,安全模式也进不去
  6. Vue Element-ui上传图片踩坑
  7. python成功将PDF文件转为图片,一次成功,不再踩坑!
  8. Java并发编程的艺术
  9. 电子邮箱格式怎么填写才正确举个例子
  10. 哪些视频字幕提取软件好用?分享这三款好用的软件