应用锁实现介绍 支持5.0
来源:互联网 发布:淘宝确定开店协议 编辑:程序博客网 时间:2024/06/06 09:12
现在通用的应用锁实现 都是启动一个service一直在后台,判断启动的应用在我们的锁内,就启动我们的锁屏界面。
public class HookService extends Service { public final static String TAG = "TestService"; private ActivityManager mActivityManager; private String mLastPackageName = ""; @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); mActivityManager = (ActivityManager) getSystemService("activity"); checkWindow(); } Handler mHandlertoast = new Handler() { @Override public void handleMessage(Message msg) { LockHelper.getInstance().unLock(HookService.this, null, mLastPackageName); } }; private void checkWindow() { new Thread() { @Override public 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被杀死了怎么办等。
0 0
- 应用锁实现介绍 支持5.0
- ViewFlipper(实现应用介绍)
- 关于Android应用多语言支持实现
- python解释器实现及其嵌入式应用:实现语法支持
- 一种软件多数据库支持实现方式介绍
- 手机网页h5实现介绍页,支持手势识别。
- WP相关插件功能应用实现介绍
- 嵌入式 linux 智能设备应用中 web 支持的实现
- Android应用多语言支持实现(方法一)
- Android应用多语言支持实现(方法二)
- 应用内特定界面支持横屏展示实现
- iOS应用如何实现64位的支持
- iOS应用如何实现64位的支持
- iOS应用如何实现64位的支持
- iOS应用如何实现64位的支持
- iOS应用如何实现64位的支持
- iOS应用如何实现64位的支持
- iOS应用如何实现64位的支持
- Swift 的类型体系
- Android MediaCodec小结
- 微信开发书本推荐:《微信公众平台应用开发:方法、技巧与案例》
- Eclipse3.7 反编译插件安装
- 移动端网页开发经验与心得-分辨率、内容与缓存
- 应用锁实现介绍 支持5.0
- 程序在内存中的分布
- JAVA多线程的问题以及处理
- Extjs4 如何获取JSON中的值
- SRAM与SDRAM的区别
- java之十五篇:内核的东西java还真翻转不了
- Teamviewer 远程协助工具
- 苹果公司发布iPad Pro向Surface Pro发起挑战
- 杭电ACM2057java做法