Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
来源:互联网 发布:ios景深软件 编辑:程序博客网 时间:2024/05/21 18:06
在Android系统中用来显示界面的组件(Component)为Activity,也就是说只有重写Activity的onKeyDown方法来监控/拦截/屏蔽系统的返回键(back)、菜单键(Menu)及Home键
1、拦截/屏蔽返回键、菜单键实现代码
1 2 3 4 5 6 7 8 9101112
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { //监控/拦截/屏蔽返回键 processExit(); return true; } else if(keyCode == KeyEvent.KEYCODE_MENU) { //监控/拦截菜单键 } else if(keyCode == KeyEvent.KEYCODE_HOME) { //由于Home键为系统键,此处不能捕获,需要重写onAttachedToWindow() } return super.onKeyDown(keyCode, event);}
2、拦截/屏蔽系统Home键
1234
public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }
为什么必须重写onAttachedToWindow(),看看下面的代码就知道了
/frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java 1000行附近
1 2 3 4 5 6 7 8 91011121314151617181920
if (code == KeyEvent.KEYCODE_HOME) { // If a system window has focus, then it doesn't make sense // right now to interact with applications. WindowManager.LayoutParams attrs = win != null ? win.getAttrs() : null; if (attrs != null) { final int type = attrs.type; if (type == WindowManager.LayoutParams.TYPE_KEYGUARD || type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) { // the "app" is keyguard, so give it the key return false; } final int typeCount = WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length; for (int i=0; i<typeCount; i++) { if (type == WINDOW_TYPES_WHERE_HOME_DOESNT_WORK[i]) { // don't do anything, but also don't pass it to the app return true; } } } }
当然,重写View的onKeyDown也可以实现,但View如果没有获得焦点,那就不能监控/拦截返回键、菜单键和Home键,所有还是重写Activity的onKeyDown方法比较好。
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home
- 重写onKeyDown方法,监控返回键、菜单键和Home键
- Android 屏蔽返回键、菜单键和Home键
- Android 屏蔽返回键、菜单键和Home键
- 监听和拦截android系统返回键
- ANDROID 返回,菜单和HOME键的监听
- ANDROID 返回,菜单和HOME键的监听
- ANDROID 返回,菜单和HOME键的监听
- android屏蔽返回键和Home键
- Android屏蔽返回键和Home键
- [转]U_boot 的 bootcmd 和bootargs参数详解
- 输入数字1——7输出星期
- Installation Oracle 10gR2(10.2.0.5) RAC with RAW on RHEL5
- 杭电ACM 1004题
- 编程window服务
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- 输入星期值,输出英文
- C++异常处理 例子2
- windows phone开发学习--加载时的旋转动画
- discuz 插件开发经验之如何运用 C::t 方法
- 基于Visual C++2013拆解世界五百强面试题--题7-链表的各种操作
- 另一种阶乘 函数法!
- c# POST And Get提交
- ios7屏幕适配