看门狗程序锁的另一种实现绑定服务_第1页
看门狗程序锁的另一种实现绑定服务_第2页
看门狗程序锁的另一种实现绑定服务_第3页
看门狗程序锁的另一种实现绑定服务_第4页
看门狗程序锁的另一种实现绑定服务_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*只要打开一个应用程序,ActivityManager*Activity的操作,ActivityManagerlog1、创建服务,在文件中配在服务开启的时候(onCreate方法时,需要执行监视操作(whileflag为true才行*定义两个广播接收者:屏幕锁屏和屏幕的接收者,需要在onCreate方法中实例化onReceive方法中:屏幕:判断标记false:是锁屏时设置的false,需要在的时候继续进行监视,收广播了(服务内部创建的接收者输入界面接收这个数据)*创建意图,开启输入的界(注意:在服务中开 activity,需要设 flag获取flagtrue②通过 获取当前正在运行的任务栈(需限才能获取*maxNum1即可,即集合中的第一个元素为最近打*获取栈顶的activityactivity如果在,继续判断是否在临时停止保护的集合中(避免重复输入)activity止保护的效果,从而不用每次都输入了*oncreate只是在服务创建的时候只执行一次,要想一直运行,所以需要放到一个*cpu(但是时间不宜太长,否则会出现先看到受保护的程序出现一瞬间的效果*flagfalseflag5、添加方法(服务里的方法(卫士中是在临时停止保护的集合中添加包名6、创建人,继承Bind,实现Iservice接(activity在人中实现此方法,调用上面自定义的方法(即服务里的方法7、在onBind方法中,返回自定义的输入的onCreateApplicationInfoinfogetPackageManager().getApplicationInfo(packname,0);onCreate方法中初始化自定义的(连接)调用绑定服务的方法:bindService(service,conn,flags)1:绑定的服务意图,服务所对应的意图2:需要连接的服务对象,接口的实现类务创建点击司直接绑定服务,调用服务里的方法(方法在服务中自定义的6、重写返回键的被点击(直接返回桌面activity,直接返回桌面true,为了终止当前的7onDestroy方法中,解除绑定:unBindloglog序(enter,2调用接口中的方法实际是调用了实现了此接口的中的方法即通过传递过来的②publicvoidonServiceConnected(ComponentNamename,IBinderservice)iService=(IService)}3onBind③publicIBinderonBind(Intentintent){returnnewMyBinder();}(IService,④privateclassMyBinderextendsBinderimplementsIService{publicvoidcallMethodInService(Stringpackname)}⑤//publicvoidaddTempStopPackname(Stringpackname)}}publicpublicclassWatchDogServiceextendsServicepublicstaticfinalStringTAG="WatchDogService";privateActivityManageram;privatebooleanflag=true;privateAppLockDaodao;privateInnerReceiverreceiver;privateLockScreenReceiverlockReceiver;privateUnLockScreenReceiverunlockReceiver;*privateList<String>tempStopProtectPacknames;privateList<String>lockedPacknames;privateIntentpublicIBinderonBind(Intentintent){returnnewMyBinder();}privateclassMyBinderextendsBinderimplementsIServicepublicvoidcallMethodInService(Stringpackname){}}privateclassLockScreenReceiverextendsBroadcastReceiver{publicvoidonReceive(ContextcontextIntentintent)Log.i(TAG,"屏幕锁屏了...");flag=}}privateclassUnLockScreenReceiverextendsBroadcastReceiver{publicvoidonReceive(Contextcontext,Intentintent){Log.i(TAG,"屏幕 return}}}//定义一个自定义的广播接受(传递给输 界面告知那个包临时停止受保护privateclassInnerReceiverextendsBroadcastReceiver{publicvoidonReceive(Contextcontext,Intentintent)Stringpackname=intent.getStringExtra("tempstoppackname");Log.i(TAG,"接收到了自定义的广播 ,临时停止保护"+packname);}}publicvoidonCreate() Uriuri=Uri.parse(" observer=newMyObserver(newHandler());getContentResolver().registerContentObserver(uri,true,observer);lockReceiver=newLockScreenReceiver();IntentFilterlockFilter=newIntentFilter();registerReceiver(lockReceiver,lockFilter);unlockReceiver=newUnLockScreenReceiver();IntentFilterunlockFilter=newIntentFilter();registerReceiver(unlockReceiver,unlockFilter);tempStopProtectPacknames=newArrayList<String>();receiver=newInnerReceiver();IntentFilterfilter=newIntentFilter();registerReceiver(receiver,filter);//am=(ActivityManager)getSystemService(ACTIVITY_SERVICE);dao=newAppLockDao(this);lockedPacknames=intent=newIntent(this,EnterPasswordActivity.class);}privatevoidstartWatchDog(){flag=true;newThread()publicvoidrun(){while(flag)//返回一个当前正在运行的任务栈集合,

List<RunningTaskInfo>infos=am.getRunningTasks(1);RunningTaskInfotaskInfoinfos.get(0);//最近打开的任务Stringpackname=taskInfo.topActivity.getPackageName();System.out.println("---"+packname);//ifdao.find(packname)){//几十毫秒if(lockedPacknames.contains(packname)){//查询内存//当前应用程序需要保护.弹出来一个输 界面//if(tempStopProtectPacknames.contains(packname))//}elseintent.putExtra("packname",packname);}try

}catch(InterruptedExceptione){}}}//publicvoidaddTempStopPackname(Stringpackname){}privateclassMyObserverextendsContentObserver{publicMyObserver(Handlerhandler){}publicvoidonChange(booleanselfChange){lockedPacknames=dao.findAll();}}publicvoidonDestroy(){flag=false;receiver=null;lockReceiver=null;unlockReceiver=null;}}输入的publicpublicclassCopyOfEnterPasswordActivityextendsActivity{privateEditTextet_pwd;privateStringpackname;privateMyConnconn;privateIServiceiService;protectedvoidonCreate(BundlesavedInstanceState){et_pwd=(EditText)findViewById(R.id.et_pwd);packname=getIntent().getStringExtra("packname");conn=newMyConn();bindService(service,conn,try info=getPackageManager().getApplicationInfo(packname,0);ImageViewiv_icon=(ImageView)findViewById(R.id.iv_icon);}catch(NameNotFoundExceptione)//TODOAuto-generatedcatchblock}}privateclassMyConnimplementsServiceConnection{publicvoidonServiceConnected(ComponentNamename,IBinderservice){iService=(IService)service;}publicvoidonServiceDisconnected(ComponentNamename)}}publicbooleanonKeyDown(intkeyCode,KeyEventevent)if(keyCode==// <actionandroid:name="ent.action.MAIN" <categoryandroid:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论