Android程序锁的实现
1.程序功能介绍
2.关键知识点
3.程序实现
3.1定时器实现
public class TimerServer {boolean clock; public void timer(final Context context, boolean clock1){//clock为程序锁标志位,true为启用程序锁功能,false为禁用程序锁功能, //当用户已经输入密码,进入被锁程序后,程序锁标志位为false;其他情况为true clock=clock1; Timer timer=new Timer(); final TimerTask timerTask=new TimerTask() {@Override public void run() {ActivityManager myActivityManager= (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> list=myActivityManager.getRunningAppProcesses(); List<ActivityManager.RunningTaskInfo> list_task=myActivityManager.getRunningTasks(100); //如果当前前台运行程序不是微信,则给微信加锁。 if (!list.get(0).processName.equals("com.tencent.mm")){clock=true; }//若当前运行程序为“微信”,且用户未通过输入密码界面确认,则调用程序锁界面。 if (list.get(0).processName.equals("com.tencent.mm")&&clock==true){//遍历当前运行task,找到本程序所在task,移至前台。 for (ActivityManager.RunningTaskInfo i:list_task) {if (i.topActivity.getPackageName().equals(context.getPackageName())) {myActivityManager.moveTaskToFront(i.id,0); }}//调用程序锁界面。 Intent intent=new Intent(); intent.setClass(context,LockActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); this.cancel(); }Log.i("processName", list.get(0).processName); }}; timer.schedule(timerTask,0,4*1000);//4s查看一次 } }
在MainActiv中调用该类方法,如下,其中activity.main中可以写些提示“按返回键让本程序后台运行”之类的提示:
public class MainActivity extends AppCompatActivity {@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new TimerServer().timer(this,true); } }
3.2程序输入密码界面及相关屏蔽后退按钮、监听home按钮的实现
public class LockActivity extends Activity{String edittext=""; EditText editText1; //程序锁标志位,true为启用程序锁功能,false为禁用程序锁功能, //当用户已经输入密码,进入被锁程序后,程序锁标志位为false;其他情况为true boolean clock=true; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_lock); //输入密码框: editText1=(EditText) findViewById(R.id.editText1); //提交密码按钮 Button button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() {@Override public void onClick(View view) {//点击按钮后,获取输入 edittext=editText1.getText().toString(); if (edittext.equals("123")){//接收到正确密码后,清除输入框,防止下次调用本页面时泄露密码。 editText1.setText(""); // 调用TimerServer,程序后台运行,设置标志位为false,即禁用程序锁功能。 moveTaskToBack(true); clock=false; new TimerServer().timer(LockActivity.this,clock); }else{clock=true; Toast.makeText(LockActivity.this, "密码错误,请重新输入", Toast.LENGTH_SHORT).show(); }Log.i("shenmegui", "输入密码: "+edittext); }}); //不断查询当前是否微信正在前台运行,若是且未在程序锁界面输入正确密码, // 则弹出程序锁输入密码界面 final Timer timer_inLockActivity=new Timer(); TimerTask task=new TimerTask() {@Override public void run() {ActivityManager activityManager=(ActivityManager) getSystemService(ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> list=activityManager.getRunningAppProcesses(); if (list.get(0).processName=="com.tencent.mm"&&clock==true){//停止当前timer并重启LockActivity,即重新弹出程序锁输入密码界面 timer_inLockActivity.cancel(); recreate(); }}}; timer_inLockActivity.schedule(task,0,4000); }@Override public boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stub //修改后退按钮,使后退按钮失效。 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {return true; }return super.onKeyDown(keyCode, event); }@Override protected void onUserLeaveHint() {//因为onKeyDown不能监听home键,故重写本方法。用户点击home键后新建计时器 // 以查看当前运行程序是否为微信且未输入密码,若是,则弹出输入密码界面。 new TimerServer().timer(this,true); Log.i("shenmegui", "onUserLeaveHint: "); super.onUserLeaveHint(); } }
该类对应的activity_lock.xml中绘制了一个editText1用来输入密码,button1用来提交密码,具体代码比较简单,不属核心程序,不再赘述。
3.3权限声明
<uses-permission android:name="android.permission.REORDER_TASKS"></uses-permission> <uses-permission android:name="android.permission.GET_TASKS"></uses-permission> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"></uses-permission>
4.声明
Android程序锁的实现相关推荐
- android程序锁预研
项目要求增加程序锁功能.要预研一下. 网上反编了比较流行的程序锁,了解到大概方向: 1 后台服务不断监视显示在前台的应用. 2 当是需要锁住的应用,启动程序锁密码页面. 3 密码成功则关闭程序锁密码页 ...
- Android:程序锁功能的简单实现
如我们所知,现在有很多牛逼的安全软件都带有程序锁的功能.当然,名字可能不一样,有的叫隐私保护,有的叫软件锁.等等.但是这种名字其实都是表达一种意思,就是可以给你手机里面的app加以保护.只有你给你的A ...
- Android 程序锁
导读:本文介绍如何实现对应用加锁的功能,无须root权限 某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让别人知道这是个什么软件,起码不想让别人打开浏览.而 ...
- android安全问题(二) 程序锁
导读:本文介绍如何实现对应用加锁的功能,无须root权限 某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让别人知道这是个什么软件,起码不想让别人打开浏览.而 ...
- Android开发——程序锁的实现(可用于开发钓鱼登录界面)
1. 程序锁原理 1.1 实现效果: 在用户打开一个应用时,若此应用是我们业务内的逻辑拦截目标,那就在开启应用之后,弹出一个输入密码的界面,输入密码正确则进入目标应用.若不输入直接按返回键,则直接返回 ...
- 适用于Android设备的十大应用程序锁
现如今的智能手机非常个人化,其中的应用程序确实会携带不同形式的个人数据,例如图片,消息,银行应用程序等. 应用锁也称为隐私锁,它是所有移动用户最关注的隐私问题之一.可以保护应用程序免受陌生人或在智能手 ...
- android程序键盘锁_适用于Android的最佳键盘应用程序
android程序键盘锁 The interactions you have with your phone's keyboard are easily some of the most intima ...
- android布局管理器模仿qq登录效果,Android程序开发仿新版QQ锁屏下弹窗功能
新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1.使用Activity,而不是V ...
- Android之世面上程序锁的实现
当我们为程序设置密码后,当我们第一次进入该程序时就会提示我们输入密码,输入正确密码后就可以继续访问该程序,如果再次访问该程序就不会提示我们输入密码,这就是市面上常见程序锁的实现. 开发思路: 1. 开 ...
最新文章
- echart的x换行
- Nginx 中 fastcgi_pass 监听端口 unix socket和tcp socket差别
- SQLServer禁用、启用外键约束
- [转载]Linux下getopt()函数的简单使用
- node.js之第一天
- THINKPHP_关联模型MANY_TO_MANY
- 2017蓝桥杯B组:承压计算(扩大倍数)
- FPV穿越机飞行入门练习
- 移动硬盘计算机限制打不开,移动硬盘突然打不开并且要求格式化怎么解决
- 【U3D方向专职猎头】 大厂、高薪职位资源多 非U3D资深勿扰 工作地点北京、深圳、上海、杭州、广州、成都、加微信17512088053
- 短视频“音频化”,音乐“视频化”
- Win8.1开始菜单Classic Shell 4.0上手
- Real-Time Rendering——5.3.3 Material Systems 材质系统
- java实现wife链接硬件_【技术分享】在Android 910上面实现WIFI功能
- AHCI sata设备初始化流程
- 阿里双十一,3分01秒破百亿;乐视网称贾跃亭无力履行承诺;法乐第未来宣布解职CFO和CTO丨价值早报
- 润雅信息完成B轮融资 大数据平台赋能汽车销售 1
- 智安新闻丨智安网络【一站式等保云平台】产品发布会,荣耀开启!
- GE凝胶成像 AI600
- erp故障处理流程图_ERP仓储管理流程图