有做过锁屏功能的都知道,Android屏蔽home键的方法会受到系统版本的影响,以2.2/2.3和4.0以上分两种情况。
在android2.2/2.3中可以通过在activity中重写
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
需要注意的是这个方法如果用到4.0以上的系统将会报以下错:
java.lang.IllegalArgumentException: Window type can not be changed after the window is added.
android4.0以上屏蔽掉home键的方法为:
1、在4.0以上的版本中需要利用以下方法屏蔽和重写Home键,代码如下:
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; //需要自己定义标志
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码
setContentView(R.layout.main);
}
2、再重写onKey事件即可。
@Override
public boolean onKeyDown( int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == event. KEYCODE_HOME) {
return true;
}
return super.onKeyDown(keyCode, event);
}
在AndroidMainfest.xml需要加权限:
<uses-permission android:name = "android.permission.DISABLE_KEYGUARD"/><!-- 屏蔽HOME键需要的权限 -->
在配置文件中,在使用
了Notification的
activity中加一个属性android: android:launchMode="singleInstance"