首页 > 代码库 > 练手小项目(5)安全卫士_程序锁bug修复一

练手小项目(5)安全卫士_程序锁bug修复一

程序锁的基本功能,已经实现了,但是你如果输入密码进入 APP以后,看门狗,还是监听你想进入的APP,这时候又会出现一个输入密码的界面。

我先说一下思路。

①思路

 1.通过发送自定义广播在服务里面,监控多一个判断如果是临时取消保护的程序就不再启动程序锁 ,这时候,我们要解决的就是什么时候再让他启动监听呢,答案就是 锁屏的时候。

2.通过锁屏将零时保护值设为空就可以继续保护了


但是bug 还是有 那就不停的安返回键 取消 输入密码界面,可以慢慢把界面内容看完,怎么解决呢 
解决方案的是:

3. 如果在输入密码界面的时候,返回  可以慢慢把内容看完,所以我们监控返回键,如果返回直接回桌面

 4.如果在进入其他被加锁的应用 输入密码显示的信息还是上一个 所以我们通过Onstop将activity finish掉

OK  因为这个应用我是在测试项目里写的 源码在后面提供下 大家只要直接找 appmanager那部分代码就行了

解决方案一

在  EnterPwdActivity.java 里面
//告诉看门狗这个程序密码输入正确了。 可以临时的停止保护。
			//自定义的广播,临时停止保护。
			Intent intent = new Intent();
			intent.setAction("com.xiaoxin.mobilesafe.tempstop");
			intent.putExtra("packname", packname);
			sendBroadcast(intent);
			finish();
WatchDogService.java  
然后接受自定以广播做出处理 注册一个广播接受者 
	private InnerReceiver innerReceiver;

	innerReceiver = new InnerReceiver();
	registerReceiver(innerReceiver, new IntentFilter("com.xiaoxin.mobilesafe.tempstop"));

	private class InnerReceiver extends BroadcastReceiver{

		

		@Override
		public void onReceive(Context context, Intent intent) {
			tempstop = intent.getStringExtra("packname");
		}
		
	}

对服务进行处理,
//还要判断这个应用程序是否临时停止保护
						if (packageName.equals(tempstop)) {
							
						}
不做任何操作 如果不是继续监听app



解决方案二

监听锁屏的时候的广播 
private ScreenOffReceiver offreceiver;



private class ScreenOffReceiver extends BroadcastReceiver {
		@Override
		public void onReceive(Context context, Intent intent) {
			offreceiver = null;
		}
	}

<span>		</span>offreceiver = new ScreenOffReceiver();
<span>		</span>registerReceiver(offreceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));

解决方案三 

回到输入密码界面的代码  

	@Override
	public void onBackPressed() {
		//回桌面。
		Intent intent = new Intent();
		intent.setAction("android.intent.action.MAIN");
		intent.addCategory("android.intent.category.HOME");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.addCategory("android.intent.category.MONKEY");
		startActivity(intent);
		//所有的activity最小化 不会执行ondestory 只执行 onstop方法。
	}


@Override
	protected void onStop() {
		super.onStop();
		finish();
	}


练手小项目(5)安全卫士_程序锁bug修复一