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

  • 如我们所知,现在有很多牛逼的安全软件都带有程序锁的功能。当然,名字可能不一样,有的叫隐私保护,有的叫软件锁。等等。但是这种名字其实都是表达一种意思,就是可以给你手机里面的app加以保护。只有你给你的App设置了程序锁,这样每次在你进入这个App的时候就要先输入密码,然后才能进入。
  • 程序锁功能并不是什么高大上的技术,也不是很难的技术点。于是,受到灰驹的启发,我就写了一个简单的,UI比较丑陋的程序锁的小Demo。
  • 国际惯例:先分析一下做一个程序锁功能所涉及到的知识点:

    • 组建的使用。
    • 组建的使用(当然,这个不是必须的,在实现这个功能上)。
    • 启动模式的了解。
    • 的APi使用。
    • 的API的使用。
    • 数据库的使用。(这个也不是必须的)
    • 的API的使用。(有些手机不主动打开软键盘,就需要使用这个类)


  • OK,介绍就这些了,下面是代码区:

    • 关于UI方面,简单说明一下,里面就一个主,作用就是让用户选择添加需要加锁的应用,进行加锁操作。然后就是一个弹出让用户给加锁的应用输入密码的。在用户点击要打开已经加锁的应用时候弹出。
  • 首先是xml代码:
    • 的布局:
  • xml布局就没有了。
  • 需要注意一下,程序锁功能里面需要添加的权限:
  • 然后是Java代码:
    • 首先是程序的
  • 然后是
package com.duck.husband;import java.util.List;import android.app.ActivityManager;import android.app.ActivityManager.RunningTaskInfo;import android.app.IntentService;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.SystemClock;public class WatchDogService extends IntentService {    private static final boolean DEBUG = false;    private static final String COM_DUCK_HUSBAND_UNCHECKED = "com.duck.husband.UNCHECKED";    private Context context;    private WatchDogDao watchDogDao;    private String unCheckedPackageName;    private UnCheckedReceiver receiver;    public WatchDogService() {super("abcde");context = this;watchDogDao = new WatchDogDao(context);    }    @Override    public void onCreate() {super.onCreate();receiver = new UnCheckedReceiver();IntentFilter filter = new IntentFilter();filter.addAction(COM_DUCK_HUSBAND_UNCHECKED);filter.addAction(Intent.ACTION_SCREEN_OFF);registerReceiver(receiver, filter);    }    @Override    protected void onHandleIntent(Intent intent) {while (true) {    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);    List runningTasks = am.getRunningTasks(99);    String packageName = runningTasks.get(0).topActivity.getPackageName();    // 获取最近打开的App包名    boolean b = watchDogDao.query(packageName);    if (b) { // 说明是加锁的程序 if (packageName.equals(unCheckedPackageName)) { } else {Intent intent2 = new Intent(context, LockActivity.class);intent2.putExtra("packageName", packageName);// TODO:这一行不加,就没有办法去临时取消保护了!!!intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent2); }    } else {    }    if (DEBUG) { System.out.println("packageName 0:" + packageName);    }    SystemClock.sleep(300);}    }    @Override    public void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();if (receiver != null) {    unregisterReceiver(receiver);

来源:南郭竽

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年9月7日
下一篇 2015年9月7日

相关推荐