版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*只要打开一个应用程序,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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 全国计算机等级考试(二级)考试题库及答案【易错题】
- 浙江G5联盟2023-2024学年高一下学期期中联考数学试题(解析版)
- 四川省百师联盟2024届高三冲刺卷(二)全国卷数学试题(理)(解析版)
- 固体制剂项目可行性报告
- 江苏省扬州市高邮市2022-2023学年高一下学期期中数学试题(解析版)
- 2024年饮品店项目建议书
- 山西省临汾市隰县午城中学高一英语联考试题含解析
- 计算机二级真题题库(轻巧夺冠)
- 统编版小学语文三年级下册口语交际:春游去哪儿玩教案
- 山西省吕梁市岚县高级职业中学高一英语月考试题含解析
- 2024年辽宁省生态环境监测专业技术人员大比武竞赛考试题库(含答案)
- 2023年网络安全知识考试题库600题(含各题型)
- 心理健康知识问答
- 食物中毒专业知识培训培训课件
- 碧桂园的财务风险分析与防范措施
- 材料项目可行性报告
- 2024-2029年中国乡村旅游行业发展深度分析及投资前景预测报告
- 企业信用风险评估报告
- 苏教版高中化学必修化学方程式汇总
- VDA6.3检查表-2016版-要素说明
- 概率论与数理统计(黑龙江八一农垦大学)智慧树知到期末考试答案2024年
评论
0/150
提交评论