当前位置: 代码迷 >> Android >> Android在程序中捕杀HOME键的方法
  详细解决方案

Android在程序中捕杀HOME键的方法

热度:21   发布时间:2016-05-01 19:17:00.0
Android在程序中捕捉HOME键的方法

默认情况下,重写onKeyDown方法是无法捕捉到HOME键的,原因不太清楚,不过我想是因为系统也在捕捉HOME键,而且优先级比我们的程序要高.我们可以通过修改窗口类型来达到我们的目的.
首先重写onAttachedToWindow方法:

@Override	public void onAttachedToWindow() {		// TODO Auto-generated method stub		super.onAttachedToWindow();		this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);                        //设置窗口类型	}

?onAttachedToWindow 在API文档中英文原文解释:Called when the main window associated with the activity has been attached to the window manager.在主窗口被关联到被附加到窗口管理器的Activity时调用,其实说得模糊点应该就是在Activity启动时调用的.加了这个后,在UI上有点小变化,如果你的Activity不是占满全屏的(AlertDialog样式),默认情况下是会显示Activity下面的窗口的(没有被遮住的部分),但是加了这个以后,Activity以外的空间是全黑的.
然后就可以在onKeyDown里捕捉到了:

@Override	public boolean onKeyDown(int keyCode, KeyEvent event) {		// TODO Auto-generated method stub 		if(keyCode==KeyEvent.KEYCODE_HOME){			System.out.println("按到HOME键");			return false;		}		return super.onKeyDown(keyCode, event);	}

?

  相关解决方案