Android之世面上程序锁的实现
来源:互联网 发布:淘宝运营投资计划表 编辑:程序博客网 时间:2024/06/06 08:49
当我们为程序设置密码后,当我们第一次进入该程序时就会提示我们输入密码,输入正确密码后就可以继续访问该程序,如果再次访问该程序就不会提示我们输入密码,这就是市面上常见程序锁的实现。
开发思路:
1. 开启服务,在服务中开启一个死循环,这个死循环用来检测当前访问的程序是不是被加锁的程序,如果是则弹出输入密码对话框。这里采用数据库来保存被加锁的程序。
2. 密码被保存在xml 中,如果匹配密码后则进入程序界面。
3.用一个boolean变量来防止多次进入同一个程序而导致显示密码对话框。
关键代码:
核心代码
public void onCreate() {//daolockAppDao = new LockAppDao(getApplicationContext());//从数据库获取到程序锁的集合blockapppacks = lockAppDao.findAll();//获取程序锁集合和程序锁当前状态是否已经打开blockappinfos = new ArrayList<LockAppInfo>();fillData(blockapppacks);// 得到activity的管理器activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);intent = new Intent(this, EnterPasswordActivity.class);// 在新的任务栈中创建 activity的实例intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);new Thread() {@Overridepublic void run() {// 看门狗, 不停的查看当前activity任务栈的栈顶while (true) {// 首先获取到最上面的任务栈, get(0) 获取到任务栈栈顶的activityString packname = activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();for (LockAppInfo apppackinfo : blockappinfos) {if (packname.equals(apppackinfo.getPackname())) {//防止重复弹出密码对话框if (!apppackinfo.isFlagcanstart()) {// 弹出密码对话框,弹出新的activity 覆盖当前要启动的activityintent.putExtra("packagename", packname);startActivity(intent);}}}try {Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}}}}.start();super.onCreate();}private void fillData(List<String> blockapppacks2) {for(String blockapp :blockapppacks2 ){LockAppInfo info = new LockAppInfo();info.setPackname(blockapp);info.setFlagcanstart(false);blockappinfos.add(info);}}
匹配密码
public void entry(View view){System.out.println("123");String password = et_password.getText().toString();String pwd = sp.getString("lock_app_pwd", "");Intent intent = getIntent();if (password.equals(pwd)){if(intent!=null){String packname = intent.getStringExtra("packagename");Log.i(TAG,packname);iLockService.stopLockAppFlag(packname);}finish();}}
输入密码时屏蔽后退键
// 屏蔽用户按后退键@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {return true;}return super.onKeyDown(keyCode, event);}
- Android之世面上程序锁的实现
- Android之世面上程序锁的实现
- Android之世面上程序锁的实现
- android之程序自动更新的实现
- android之程序自动更新的实现
- android之程序自动更新的实现
- android之程序自动更新的实现
- Android程序锁的实现
- Android之Speex在Android上的实现
- 在Android手机程序上实现插件
- react-native之tabBar在Android平台上的实现
- Android:程序锁功能的简单实现
- linux上Ping程序的实现
- 安装在Android机器上的截图程序实现,需要root
- android widget 开发实例 : 桌面便签程序的实现详解和源码 (上)
- Android上如何正确实现程序的联网,事关WIFI/CMWAP/CMNET
- android widget 开发实例 : 桌面便签程序的实现详解和源码 (上)
- Android上如何正确实现程序的联网,事关WIFI/CMWAP/CMNET
- RMAN中通过时间点不完全恢复报ORA-01841的解决办法
- Git代码管理之——git revert与git reset .
- 试论将μC/OS-II用于单片机教学
- 黑客最新发布了SSL DDOS攻击工具
- 用正则解析图片地址,并利用XMLHTTP组件将其保存
- Android之世面上程序锁的实现
- 开始写博客了
- 二级指针与取地址运算符
- (36)JSP的隐式对象
- Spring OSGi Eclipse开发环境的搭建
- JSP技术
- struts+json实现注解配置
- (37)实例,用模式一实现用户登录功能
- 详解在XCode4中Cocos2D-1.0.0文档集成