版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*只要打开一个应用程序,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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承包经营合同范本
- 网络广告合同书范本
- Unit+5+Music+Assessing+Your+Progress 教学设计 高中英语人教版(2019)必修第二册
- 妇产科英语词汇
- 基于java的农产品销售系统的设计与实现论文
- 安装安全协议书合集(23篇)
- 元旦晚会开场白合集(16篇)
- 转租房屋租赁合同书样本(8篇)
- 基于学科核心素养的小学英语命题策略论文
- 欠款还款承诺书怎么写(3篇)
- 2023年畜牧兽医考试:畜牧师职称真题模拟汇编(共222题)
- 园林植物常用种类及规格一览表
- 【电商直播运营中存在的问题及对策研究开题报告文献综述5000字】
- 2023年注册电气工程师供配电(专业知识)上午真题试卷及答案与解析
- 2023年故宫博物院应届生招聘笔试备考题库及答案解析
- 河南永煤碳纤维有限公司千吨级GQ4522级聚丙烯腈基碳纤维产业化-环境影响评价报告书(简本)
- 上海市市场监督管理局监测评价中心招考聘用笔试题库含答案解析
- 校园运动会安全教育(课件)小学主题班会
- 清明节主题班会缅怀先烈致敬英雄爱国主义教育PPT课件(含完整内容)
- 砂石加工系统施工方案优秀资料
评论
0/150
提交评论