最近做了一个demo——功能是给自己的应用加锁,访问的时候需要输入密码,并且每次锁屏再开之后都需要重新输入密码。
主要思路:
- 设置一个全局变量表示当前应用的状态(布尔值:已锁定|已解锁),在每个Activity显示之前进行状态判断,如果当前为锁定状态,则终止显示,跳转到密码界面。
- 在密码界面输入正确的密码之后,将应用状态改为已解锁,并返回继续显示之前的Activity;否则继续要求输入密码。
- 注册一个广播接收,监听系统的锁屏事件,有锁屏事件发生时,将应用的状态改为已锁定。(即每次锁屏之后需要重新输入密码)
具体实现:
1. 全局变量的实现
1.1 用一个全局的静态变量当然是OK的。
1.2 不过在Android上我们可以用一个更“优雅”一点的实现:利用Android的Application对象(文档)。
- 写一个MyApplication类,继承自android.app.Application。
- 在MyApplication中定义一个状态变量,并且在onCreate()方法中进行初始化。
- 在AndroidMainfest.xml中在标签添加name属性,值为MyApplication的完整类名。 <