黑马程序员技术交流社区

标题: Android实现屏蔽Home键 [打印本页]

作者: 夜正黑    时间: 2015-12-28 14:18
标题: Android实现屏蔽Home键
我做了一个小的锁屏软件,屏蔽Home键,总是失效,有没有大神们有好的屏蔽方法
public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
                switch (keyCode) {
                case KeyEvent.KEYCODE_HOME:
                        return true;
                }
                return super.onKeyDown(keyCode, event);
        };

这个无用

作者: cj286    时间: 2015-12-28 18:17
在2.3版本以下重写下面方法就能重写home键
public void onAttachedToWindow() {
      this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
      super.onAttachedToWindow();
}
在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事件即可。
@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);
      }

PS:

在AndroidMainfest.xml需要加权限:  
<uses-permission android:name = "android.permission.DISABLE_KEYGUARD"/><!-- 屏蔽HOME键需要的权限 -->

在配置文件中,在你使用了Notification的activity中加一个属性android: android:launchMode="singleInstance"
作者: 18338762337    时间: 2015-12-28 18:31
学习中,顶顶顶
作者: 罗宁    时间: 2015-12-29 09:20
我去 看上去好高端的样子
作者: 小四姐姐    时间: 2015-12-31 10:48
回复很厉害啊
作者: huqianqian    时间: 2016-1-1 20:56
不知道,没用过,但是你好棒啊!
作者: 15733279864    时间: 2016-1-6 22:17
在2.3版本以下重写下面方法就能重写home键
public void onAttachedToWindow() {
      this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
      super.onAttachedToWindow();
}
在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事件即可。
@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);
      }

PS:

在AndroidMainfest.xml需要加权限:  
<uses-permission android:name = "android.permission.DISABLE_KEYGUARD"/><!-- 屏蔽HOME键需要的权限 -->

在配置文件中,在你使用了Notification的activity中加一个属性android: android:launchMode="singleInstance"
作者: liyongyong    时间: 2016-1-6 23:04
66666666666666666
作者: dengwenqiang    时间: 2016-1-8 10:00
楼主,你这个问题我也查了很多网站,都是不管用的了,2.3还能用,4.0后就不行了,至于楼上他们发的那些也 不行,我亲测过了,如果你英语好,去这个网站吧,我没看懂他们的示例代码,这个也不是真正意义上的屏蔽Home键,百度锁屏利用的原理和这个差不多,想了解的可以下来看看,https://github.com/,
作者: JC小子    时间: 2016-1-8 22:35
努力学习中,加油
作者: guohaiping521    时间: 2016-5-8 15:28
说的方法一看就不对。。。
作者: mischen    时间: 2016-5-13 21:34
好厉害,不过不是太懂,还没有学到那里
作者: 清辉    时间: 2017-1-4 17:15
请问这个问题解决了吗,查了很多方法,都不管用,还有说要改framework源码
作者: 陈胜华    时间: 2017-3-21 16:59
有又百度里面的一模一样,试过不管用5.1的系统




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2