




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
android 4.0 屏蔽home键实现 分类: Android 2012-05-01 18:14 115人阅读 评论(0) 收藏 举报 最近研究锁屏,按照常规的方法,常规方法如下Java代码 1. publicvoidonAttachedToWindow() 2. 3. this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 4. super.onAttachedToWindow(); 5. 但是这个方法到了4.0的系统上就失效了,按home照样会返回桌面。apktool了几个锁屏的软件之后发现其实现方法,即用WindowManager的addview方法将view加到窗口上,加上的时候将view的layoutparamas的type设为LayoutParams.TYPE_SYSTEM_ERROR,这个值sdk的解释为Java代码 1. publicstaticfinalintTYPE_SYSTEM_ERROR 2. Since:APILevel1 3. Windowtype:internalsystemerrorwindows,appearontopofeverythingtheycan.如果直接这样用会报错,还要在AndroidManifest.xml里面加上权限,ok上完整代码,封装了一个类,其中Lock和hide方法实现锁屏和解锁。Java代码 1. publicclassLockLayer 2. privateActivitymActivty; 3. privateWindowManagermWindowManager; 4. privateViewmLockView; 5. privateLayoutParamsmLockViewLayoutParams; 6. 7. publicLockLayer(Activityact) 8. mActivty=act; 9. init(); 10. 11. 12. privatevoidinit() 13. mWindowManager=mActivty.getWindowManager(); 14. mLockViewLayoutParams=newLayoutParams(); 15. mLockViewLayoutParams.width=LayoutParams.MATCH_PARENT; 16. mLockViewLayoutParams.height=LayoutParams.MATCH_PARENT; 17. /实现关键 18. mLockViewLayoutParams.type=LayoutParams.TYPE_SYSTEM_ERROR; 19. /apktoolvalue,这个值具体是哪个变量还请网友帮忙 20. mLockViewLayoutParams.flags=1280; 21. 22. publicvoidlock() 23. if(mLockView!=null) 24. mWindowManager.addView(mLockView,mLockViewLayoutParams); 25. 26. 27. publicvoidunlock() 28. if(mWindowManager!=null) 29. mWindowManager.removeView(mLockView); 30. 31. 32. publicvoidsetLockView(Viewv) 33. mLockView=v; 34. 35. 使用方法如下Java代码 1. publicvoidonCreate(BundlesavedInstanceState) 2. super.onCreate(savedInstanceState); 3. Viewlock=View.inflate(this,R.layout.main,null); 4. LockLayerlockLayer=newLockLayer(this); 5. lockLayer.setLockView(lock); 6. lockLayer.lock(); 7. ok,这时可以实现按home键不返回桌面的效果,其他的键需要用另外的代码实现,网上都有。这段代码只调用一次的时候没有问题,但是如果遇到多线程或者多次lock和hide就会有问题,修改如下,一是将LockLayer改为单例模式,二是在hide和lock的时候先判断状态。修改后代码如下Java代码 1. publicclassLockLayer 2. privateActivitymActivty; 3. privateWindowManagermWindowManager; 4. privateViewmLockView; 5. privateLayoutParamsmLockViewLayoutParams; 6. privatestaticLockLayermLockLayer; 7. privatebooleanisLocked; 8. 9. publicstaticsynchronizedLockLayergetInstance(Activityact) 10. if(mLockLayer=null) 11. mLockLayer=newLockLayer(act); 12. 13. returnmLockLayer; 14. 15. 16. privateLockLayer(Activityact) 17. mActivty=act; 18. init(); 19. 20. 21. privatevoidinit() 22. isLocked=false; 23. mWindowManager=mActivty.getWindowManager(); 24. mLockViewLayoutParams=newLayoutParams(); 25. mLockViewLayoutParams.width=LayoutParams.MATCH_PARENT; 26. mLockViewLayoutParams.height=LayoutParams.MATCH_PARENT; 27. /实现关键 28. mLockViewLayoutParams.type=LayoutParams.TYPE_SYSTEM_ERROR; 29. /apktoolvalue,这个值具体是哪个变量还请网友帮忙 30. mLockViewLayoutParams.flags=1280; 31. 32. publicsynchronizedvoidlock() 33. if(mLockView!=null&!isLocked) 34. mWindowManager.addView(mLockView,mLockViewLayoutParams); 35. 36. isLocked=true; 37. 38. publicsynchronizedvoidunlock() 39. if(mWindowManager!=null&isLocked) 40. mWindowManager.removeView(mLockView); 41. 42
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年城乡结合部电力设施改造分包协议
- 2025版内容创业佣金提成协议下载
- 2025版材料科学与工程实习生就业合同规范
- 河北省泊头市2025年上半年事业单位公开遴选试题含答案分析
- 2025年度智能穿戴设备委托开发合同
- 2025方管市场大宗交易合作协议书
- 2025年度人民法院协议离婚程序操作指南及案件审理合同
- 2025年度城市环卫货物委托运输协议
- 2025版南汇农业志编纂与非物质文化遗产保护合同
- 2025年建筑防水材料销售与施工培训承包协议
- 2025至2030中国压力袜(弹性袜)行业项目调研及市场前景预测评估报告
- 房屋抵押的合同(标准版)
- 征兵体检面试全攻略:面试题及答案解析
- 中国土地荒漠化课件
- 2025晋中祁县司法协理员招聘笔试备考试题及答案解析
- Unit 3 Same or DifferentSection A Grammar Focus (3a-3c) 课件-2025-2026学年人教版八年级英语上册
- 2025数据中心机房建设方案
- 管线及设备开启作业安全管理制度与操作流程
- 揭西招投标管理办法
- 2025年小学语文教师新课程标准考试题目(含答案)
- 社区与小课堂的合同协议
评论
0/150
提交评论