这个home key你是做不到的,windowmanagerservice的policy,phonewindowmanager在分发key之前会先判断是否要分发这个event,在interceptKeyBeforeDispatching里面,他拦截了home key.

解决方案 »

  1.   

    同上,home处理没分发到最上层的View那去
      

  2.   

    但貌似我在帖子里面看到有位哥们 用以下方法引用 17 楼 nj_dobetter 的回复:确保在AndroidManifest.xml里面添加以下权限:
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />引用 ……非常感谢你的帮助,用你给的方法,的确实现了屏蔽home键,但随之带来了一个问题,就是屏幕(我的锁屏activity)也无法响应触摸事件了,我希望用户通过点击屏幕上的按钮来解锁,所以,我根据你的提示,对你的方法进行了略微的修改,实现了全屏时屏蔽除关机键外的所有键并能响应键盘。分享一下我的方法:
    =================================================================
    声明权限:
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />在activity类中声明函数和成员:Runnable mDisableHomeKeyRunnable = new Runnable() {@Override
    public void run() {
    disableHomeKey();}
    };Handler mHandler = new Handler();public void disableHomeKey()
    {
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    }在onCreate中调用:
    mHandler.postDelayed(mDisableHomeKeyRunnable,200);
    ==============================================================
    但是我在我的samsung 2.3.4的系统里面试了 一下,只能屏蔽长按,不能屏蔽短按,谁晓得是怎么回事
      

  3.   

    算了,不纠结与屏蔽Home了,最好是不要屏蔽,遇到问提要从正面解决。我的BUG解了,只需要发个广播把系统的DLG干掉就OK 了
      

  4.   

    这个屏蔽home键好像是2.多的时候比较好实现,重写onAttatchToWindow()方法就OK了,不过现在4.多反正是不能用了,我自己的做法是写个广播,点home键的时候再处理了,你要是还没实现的话我们可以探讨一下