安卓开发之应用锁

原创 2015年11月17日 20:26:01

安卓应用锁在各大应用商店都有很多类似的产品,所以关于其功能我就不再过多的介绍了。

现在,我们来简单说说应用锁核心功能的实现原理:

  1. 首先,需要一个Service来实时监听当前运行的程序,判断是否为选中需要锁定的程序。这里需要设置一个时间间隔,不然会加重CPU的负担,增加耗电量。
  2. 如果当前正在显示的程序是被锁定的程序,那么我们需要弹出锁定窗口。让用户输入密码,这里应当注意:需要重写Back方法,实现返回桌面的功能。
  3. 如果输入密码正确,那么直接finish这个Activity就可以实现进入被锁定的应用了。如果密码错误,可作相应的提示,要求重新输入。
我们来分别讲解每个步骤如何实现的。

1、监听程序,需要用到ActivityManager当中的方法。代码如下:
<span style="white-space:pre">	</span>ActivityManager mActivityManager;  
        mActivityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);  
        ComponentName topActivity = mActivityManager.getRunningTasks(1).get(0).topActivity;  
        String packageName = topActivity.getPackageName(); 
通过上面的代码就可以获取到当前界面所属的应用的packageName。然后判断该应用是否属于被锁定的应用。
if(lockName.get(i).equals(packageName)){  
               return true;
           } 
2、通过一个boolean变量isUnlockActivity来判断当前应用是否已经解锁了。如果已经解锁了,那么不用再输入密码。可以直接进入。
if(isLockName() && !isUnLockActivity){  

<span style="white-space:pre">	</span>//调用了解锁界面之后,需要设置一下isUnLockActivity的值                           <pre name="code" class="java"><span style="white-space:pre">	</span>isUnLockActivity = true; 
Intent intent = new Intent(LockServ.this,UnLockActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); }

至于,Back方法的重写,可以在重写里面直接调用Home键的函数即可。这样,Back键也可以直接回到桌面。(这样虽然方便,但是在某些场合会造成用户的困惑,如果用户正在程序内调用某个被保护的应用,那么此时,返回键应当回到当前应用中,而不应该是桌面)

3、最开始我在处理怎么进入解锁的应用中的时候,不知道怎么处理。想过重新调用该应用,但是处理起来很复杂。后来,干脆直接finish当前的Activity。根据安卓的机制,就会自动回到上一个Activity当中来。这样是能成功的。但是在某些情况下,会产生一些Bug,不能正确的进入应用。可能和这个有关系,后期应当在这上面做一些改进。

完美运行的应用锁Demo源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android:程序锁功能的简单实现

如我们所知,现在有很多牛逼的安全软件都带有程序锁的功能。当然,名字可能不一样,有的叫隐私保护,有的叫软件锁。等等。但是这种名字其实都是表达一种意思,就是可以给你手机里面的app加以保护。只有你给你的A...

Android手机Root后的安全问题汇总

本帖转自:        http://su1216.iteye.com/        http://blog.csdn.net/su1216/ 前提:你有一部已经ro...

跟我一起写 Makefile(四)

书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,...
  • haoel
  • haoel
  • 2004-02-24 16:50
  • 40234

跟我一起写 Makefile(三)

Makefile 总述———————一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的...
  • haoel
  • haoel
  • 2004-02-24 16:49
  • 75419

跟我一起写 Makefile(二)

三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么,    1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。    2、如果找到,它会找文件...
  • haoel
  • haoel
  • 2004-02-24 16:49
  • 59016

跟我一起写 Makefile(一)

跟我一起写 Makefile 陈皓概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和profess...
  • haoel
  • haoel
  • 2004-02-24 16:48
  • 299588

用GDB调试程序(七)

改变程序的执行———————    一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调...
  • haoel
  • haoel
  • 2003-07-12 16:42
  • 35420

用GDB调试程序(六)

七、设置显示选项    GDB中关于显示的选项比较多,这里我只例举大多数常用的选项。    set print address     set print address on   ...
  • haoel
  • haoel
  • 2003-07-12 22:24
  • 35258

用GDB调试程序(五)

查看运行时数据———————        在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。print命令的格式是:   ...
  • haoel
  • haoel
  • 2003-07-09 08:30
  • 51906

用GDB调试程序(四)

查看栈信息—————当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用GDB命令来...
  • haoel
  • haoel
  • 2003-07-09 08:30
  • 40034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)