安卓开发之应用锁

本文探讨了安卓应用锁的核心功能实现,通过Service监控运行程序,判断并锁定目标应用。当检测到锁定应用时,显示密码窗口,重写Back方法防止用户轻易退出。正确输入密码后,允许进入应用,否则提示重新输入。

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

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

  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,不能正确的进入应用。可能和这个有关系,后期应当在这上面做一些改进。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值