在2.2,2.3版本上重写下面方法就能重写home键:

 public void onAttachedToWindow() {        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);        super.onAttachedToWindow();    }
但是在4.0以上就不能用了。 刚刚发现4.0上还有一种方法可以屏蔽和重写Home键,而且非常简单。代码如下:

 public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码        setContentView(R.layout.main);    }
再重写onKey事件即可。

先找到文件PhoneWindowManager.java (frameworks\base\policy\src\com\android\internal\policy\impl)
中的对应方法 interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags)
方法一、在其中设定

 if ((null != attrs.packageName) && (attrs.packageName.startsWith("com.spreadst.validationtools"){                    return 0;                }
则对应包名的App将屏蔽掉home键,该方法只对某个特定的App有用。
方法二、在其中设定
     final int flag = attrs.flags;                if ((flag & WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED) != 0) {                    // the window wants to handle the home key, so dispatch it to it.                    return 0;                } 
则只需在需要屏蔽home键的Activity的onCreate()中添加
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);

即可


更多相关文章

  1. android 常用Bitmap处理方法收集:普通裁剪,缩放,圆形裁剪
  2. Android(安卓)Notification.Builder通知案例分享
  3. Android中调用System.exit(0)
  4. Android(安卓)图片处理方法大全
  5. Android(安卓)Touch 事件的分发和消费机制
  6. Android百度定位API使用方法
  7. 【Android】继承SimpleCursorAdapter定制Adapter
  8. Android模拟器的使用方法(Linux)
  9. 【转】Android(安卓)解析如何获取SDCard 内存

随机推荐

  1. Android性能优化之布局优化
  2. android TextView设置霓虹灯效果
  3. [Android(安卓)调试/测试] Android(安卓)
  4. Android(安卓)实现书籍翻页效果---番外篇
  5. android调试工具adb命令大全
  6. Android(安卓)Bitmap的加载和Cache
  7. 《Android经验分享》周刊第4期
  8. 关于android中使用new Message的内存泄露
  9. Android(安卓)App Dark Theme(暗黑模式)适
  10. Android(安卓)开发 调用图库选择图片实现