关闭

安卓开发之应用锁

标签: android应用
898人阅读 评论(1) 收藏 举报
分类:

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

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

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10205次
    • 积分:287
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:5篇
    • 译文:2篇
    • 评论:2条
    最新评论