android应用中屏蔽home键、back键
来源:互联网 发布:怎么从淘宝交水电费 编辑:程序博客网 时间:2024/05/21 21:42
今天查找了很多资料实现屏蔽android应用中home键、back键的使用,在android4.0之后google由于安全原因将onKeyDown中重写home键事件的方法封住了,使得屏蔽home键的任务非常难实现。
最后终于在github上找到了一个能用的方法!!!!这个方法似乎在锁屏应用中经常被用到。
奉送上地址: https://github.com/shaobin0604/Android-HomeKey-Locker
以下是我分析得出的原理,各位帮忙看看对不对
首先我们构造一个OverlayDialog类,继承自AlertDialog
构造方法:
public OverlayDialog(Activity activity) { super(activity, R.style.OverlayDialog); WindowManager.LayoutParams params = getWindow().getAttributes(); params.type = TYPE_SYSTEM_ERROR; params.dimAmount = 0.0F; // transparent params.width = 0; params.height = 0; params.gravity = Gravity.BOTTOM; getWindow().setAttributes(params); getWindow().setFlags(FLAG_SHOW_WHEN_LOCKED | FLAG_NOT_TOUCH_MODAL, 0xffffff); setOwnerActivity(activity); setCancelable(false); }android API对LayoutParams.Type的说明:
Window type: internal system error windows, appear on top of everything they can. In multiuser systems shows only on the owning user's window.
dimAmount:
When FLAG_DIM_BEHIND
is set, this is the amount of dimming to apply. Range is from 1.0 for completely opaque to 0.0 for no dim.
Push object to the bottom of its container, not changing its size.
FLAG_SHOW_WHEN_LOCKED:
Window flag: special flag to let windows be shown when the screen is locked.FLAG_NOT_TOUCH_MODAL:
Window flag: even when this window is focusable (its FLAG_NOT_FOCUSABLE
is not set), allow any pointer events outside of the window to be sent to the windows behind it.
setOwernActivity(activity);
Sets the Activity that owns this dialog. An example use: This Dialog will use the suggested volume control stream of the Activity.
实现的原理是构建一个system level的AlertDialog,重点是将params.type改成TYEP_SYSTEM_ERROR,这样的时候会连同屏幕也被屏蔽掉(alertdialog的普通功能就是屏蔽掉屏幕以及back键,升级成system level之后就连同home键一起屏蔽了),我们通过设置setFlag让屏幕显示并且屏幕的点击事件可以得到响应,这样就使得back、home、menu都被屏蔽了。
(在测试的时候遇到一些问题:1.在一些特殊设备上如我的mx4 pro、samsung tab 13由于不同的framework,有些按钮和功能会无法实现
2.由于实现屏蔽是通过alertdialog完成的,在app中一旦出现新的alertdialog就会替换掉这个system level的alertdialog,从而退出屏蔽)
- android应用中屏蔽home键、back键
- Android 屏蔽Back键,监听Home键
- Android 中屏蔽 Home 键
- Android 中屏蔽 Home 键
- android 障蔽Home键, 屏蔽BACK键,MENU键
- Android 屏蔽BACK键和HOME键的方法
- Back键和Home键的屏蔽
- Back键和Home键的屏蔽
- android屏蔽back键
- Android 按键屏蔽, Back, Home....
- android 屏蔽Home键, 屏蔽BACK键,MENU键(亲自实践有效)
- Android HOME键屏蔽
- Android 屏蔽HOME键
- Android屏蔽home键
- android屏蔽home键
- Android屏蔽home键
- Android 屏蔽Home键
- android 屏蔽home键
- php进阶笔记之类
- Java学习之装饰模式
- leetcode Balanced Binary Tree
- 黑马程序员——java入门
- JS笔记整理(四)
- android应用中屏蔽home键、back键
- 黑马程序员-OC语言核心语法(2)构造方法
- 【OpenCV】基于HSV的肤色分割
- 黑马程序员一OC面向对象语法
- Java学习之IO总结
- Linux I/O 端口和 I/O 内存
- android 4.4.2 开发环境
- 微云收藏 - js脚本
- euc-kr编码中文下乱码解决方案,idhttp