屏蔽方法基于修改android源码,不能修改android源码的请绕道

1.修改文件   WindowManager.java    (frameworks\base\core\java\android\view)

在其中添加public static final int FLAG_DISMISS_HOME_KEY = 0x02000000;

2.修改文件PhoneWindowManager.java   (frameworks\base\policy\src\com\android\internal\policy\impl)

红色部分为添加

if (keyCode == KeyEvent.KEYCODE_HOME) {

            // If we have released the home key, and didn't do anything else
            // while it was pressed, then it is time to go home!
            if (!down && mHomePressed) {//红色为添加部分
                final boolean homeWasLongPressed = mHomeLongPressed;
                mHomePressed = false;

               ..........

 WindowManager.LayoutParams attrs = win != null ? win.getAttrs() : null;
            if (attrs != null) {
                final int type = attrs.type;
               final int flag = attrs.flags;
                final int homeKeyFlag = flag & WindowManager.LayoutParams.FLAG_DISMISS_HOME_KEY; 

                  if (type == WindowManager.LayoutParams.TYPE_KEYGUARD
                        || type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG
                        || homeKeyFlag == WindowManager.LayoutParams.FLAG_DISMISS_HOME_KEY) {
                    // the "app" is keyguard, so give it the key
                    return 0;
               }


当想要在上层APP中实现时,先定义:

public static final int FLAG_DISMISS_HOME_KEY = 0x02000000;

this.getWindow().addFlags(FLAG_DISMISS_HOME_KEY);

解除home键屏蔽

this.getWindow().clearFlags(FLAG_DISMISS_HOME_KEY);



更多相关文章

  1. android ndk 无法找到 so 案例一例
  2. Android——Video/视频 相关知识总结贴
  3. Android(安卓)DownloadProvider 源码分析
  4. 仿qq未读消息
  5. Android系统WIFI设置源码解析
  6. eclipse中查看android的SDK源代码
  7. 打开Android(安卓)Studio报错 "required plugin "Android(安卓)S
  8. 关于Handler.removemessages方法
  9. Android(安卓)studio 打包aar

随机推荐

  1. android myclass
  2. AESUtil工具类
  3. 让自己的应用具有被调出分享功能
  4. Notifications的使用建议
  5. Android(安卓)内存优化
  6. Head Fisrt Android(安卓)Development读
  7. LocationManager定位
  8. 回收图片
  9. android 常用权限备份
  10. Caching Bitmaps