Android4.0以后屏蔽以及HOME按键事件拦截
2013-10-13 08:25
591 查看
Android4.0以前如果想要拦截或者处理物理HOME按键,可以通过重写onKeyDown函数进行拦截,代码如下:
return true标示不需要底层再处理该事件,应用处理结束后,不会向下传递该事件。如果想做其他的操作,例如点击Home按键或者返回按键,弹出相应提示,可以在上述两个函数当中进行实现。
Android4.0以后,重写该函数,是不能监听到信息的,即使我们重写了上述onKeyDown函数,点击物理HOME按键,是不会响应case KeyEvent.KEYCODE_HOME:原因是Android4.0以后,将HOME按键默认返回到桌面。其他按键重写onKeyDown还是可以完成的。
有些时候,我们需要拦截或者处理HOME按键,其实Android4.0以后也是可以处理的,如果Android4.0以后真的是完全禁止了HOME按键的话,那个人认为 case KeyEvent.KEYCODE_HOME:这个他应该也处理掉才对。同时参考电话应用,来电话的时候,点击HOME按键是没有作用的,原理很简单,电话应用禁止了HOME按键。
实现方式如下:
如果只是想简单的禁止HOME按键,也就是在你的应用中,点击HOME按键,你的应用不会被挂到后台,那么在onCreate函数里面直接调用enableHomeKeyDispatched传递false即可,如果想响应home按键,传递false的同时,再重写onKeyDown函数,在KeyEvent.KEYCODE_HOME:里面进行你的操作即可。
完整代码如下:
原创文章,转载请填写文章来源:http://blog.csdn.net/songshizhuyuan/article/details/12675679
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { case KeyEvent.KEYCODE_BACK: //返回按键拦截 return true; case KeyEvent.KEYCODE_HOME: //Home按键拦截 return true; } return super.onKeyDown(keyCode, event); }
return true标示不需要底层再处理该事件,应用处理结束后,不会向下传递该事件。如果想做其他的操作,例如点击Home按键或者返回按键,弹出相应提示,可以在上述两个函数当中进行实现。
Android4.0以后,重写该函数,是不能监听到信息的,即使我们重写了上述onKeyDown函数,点击物理HOME按键,是不会响应case KeyEvent.KEYCODE_HOME:原因是Android4.0以后,将HOME按键默认返回到桌面。其他按键重写onKeyDown还是可以完成的。
有些时候,我们需要拦截或者处理HOME按键,其实Android4.0以后也是可以处理的,如果Android4.0以后真的是完全禁止了HOME按键的话,那个人认为 case KeyEvent.KEYCODE_HOME:这个他应该也处理掉才对。同时参考电话应用,来电话的时候,点击HOME按键是没有作用的,原理很简单,电话应用禁止了HOME按键。
实现方式如下:
private void enableHomeKeyDispatched(boolean enable) { final Window window = getWindow(); final WindowManager.LayoutParams lp = window.getAttributes(); if (enable) { lp.flags |= WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED; } else { lp.flags &= ~WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED; } window.setAttributes(lp); }
如果只是想简单的禁止HOME按键,也就是在你的应用中,点击HOME按键,你的应用不会被挂到后台,那么在onCreate函数里面直接调用enableHomeKeyDispatched传递false即可,如果想响应home按键,传递false的同时,再重写onKeyDown函数,在KeyEvent.KEYCODE_HOME:里面进行你的操作即可。
完整代码如下:
public class TestHomeActivity extends Activity { private TextView textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView)this.findViewById(R.id.textview); enableHomeKeyDispatched(false); } private void enableHomeKeyDispatched(boolean enable) { final Window window = getWindow(); final WindowManager.LayoutParams lp = window.getAttributes(); if (enable) { lp.flags |= WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED; } else { lp.flags &= ~WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED; } window.setAttributes(lp); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_HOME; textView.setText("key home"); return true;//return false; case KeyEvent.KEYCODE_BACK: return true; } return super.onKeyDown(keyCode, event); }
原创文章,转载请填写文章来源:http://blog.csdn.net/songshizhuyuan/article/details/12675679
相关文章推荐
- android如何屏蔽home back power按键(现保存以后很可能会需要的)
- 如何在Android App中屏蔽(拦截)Home按键及其他按键
- 如何在Android App中屏蔽(拦截)Home按键及其他按键
- Android 4.0按键事件以及电源管理流程分析
- Android App中屏蔽(拦截)Home按键及其他按键
- android 4.0以上屏蔽HOME按键
- Android 4.0按键事件以及系统流程分析
- Android 4.0按键事件以及电源管理流程分析
- 如何在Android App中屏蔽(拦截)Home按键及其他按键
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
- Android 怎么退出整个应用程序?__以及__按键事件捕获的问题?
- android长按home键源码分析以及模拟长按home事件--弹出近期任务
- Android 拦截 HOME 按键
- Atitit.android js 的键盘按键检测Back键Home键和Menu键事件
- android 4.0.x Home键事件拦截/监听
- android4.1 activity内屏蔽HOME按键功能
- Android 屏蔽recent按键 ,Home按键,Recent按键的监听可以用广播,还有开机启动app
- Android按键拦截处理最佳实践范例(以Back事件为例)
- android应用中不响应按键事件(俗称拦截按键)
- android framework java层是如何拦截并分发底层传送来的按键事件