新手请教一个问题。
再做一个应用,类似于开机向导之类的东西,现在想屏蔽掉home键
现在2有个问题关于home键的
1 当我按menu键。调出option menu后,如何屏蔽home键?2 当我调用系统自带的程序,比如调节亮度 ,选择来电音量 这种弹出的dialog ,又要如何去屏蔽home键?当然再自己写的activity里 可以正常屏蔽home 代码如下 , 但是不适用我上面的2种情况。。 //当在设置向导界面 屏蔽掉所有的按键响应
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub

        switch(keyCode) {
        case KeyEvent.KEYCODE_BACK:
               break;
        case KeyEvent.KEYCODE_HOME:                break;
        case KeyEvent.KEYCODE_MENU:
                break;
        }
        return false;
}

//屏蔽Home键
@Override
public void onAttachedToWindow() {
// TODO Auto-generated method stub
System.out.println("onAttachedToWindow");
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); //TYPE_KEYGUARD_DIALOG  TYPE_KEYGUARD
super.onAttachedToWindow();
}
第一次发帖。请各位高手给力~~~谢谢

解决方案 »

  1.   

    当初我做这个项目的时候也纠结这个,客户要求按下home键完全退出程序,而不是在后台运行这种方法是可以监听到home事件,但是有的时候会全屏,而且自己是无法控制的,这点文档上面也写有好像最后我是把每启动一个Activity都添加进一个List里面按home键的时候清空这个List,好像之后我是复写的onUserLeaveHint这个方法
      

  2.   

    我是想屏蔽掉home  不是退出程序
      

  3.   

    1 当我按menu键。调出option menu后,如何屏蔽home键?
        设置一个全局的boolean类型的标志flag,在进入menu选项时,将flag设置为true,在屏蔽home键时,while(flag)判断一下是否屏蔽不久行了,还有在退出menu时将flag设为false
    2 当我调用系统自带的程序,比如调节亮度 ,选择来电音量 这种弹出的dialog ,又要如何去屏蔽home键?
        这个除了修改Android系统源码或是自己写一个应用将原来的应用程序覆盖,我也想不出其他的办法
      

  4.   


    1 设置一个全局的boolean类型的标志flag,在进入menu选项时,将flag设置为true,在屏蔽home键时,while(flag)判断一下是否屏蔽不久行了,还有在退出menu时将flag设为false
    这个menu也是系统的  怎么判断和屏蔽??
    我拦截不倒啊
      

  5.   

       呵呵,这个我倒是没想过,不过可以捕获KeyEvent.KEYCODE_MENU试试
      

  6.   

    你第一段代码什么意思?那里能收到homekeyevent么?收到的话为什么不屏蔽掉?
    那个地方return true;
      

  7.   

    dialog的话,你研究下WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG
      

  8.   


    当menu弹出后。。就不走onekeydown了 
      

  9.   


    当menu弹出后。。就不走onkeydown了 
      

  10.   


    干掉什么??
    现在问题是要屏蔽home键的响应。。
      

  11.   

    有高手能解答么?
    继承preference的那种dialog是如何show出来的?
      

  12.   

    http://blog.csdn.net/aomandeshangxiao/article/details/6659305
    http://blog.csdn.net/aomandeshangxiao/article/details/6643831
    http://blog.csdn.net/aomandeshangxiao/article/details/6659346
      

  13.   

    http://blog.csdn.net/yiyaaixuexi/article/details/6604430
      

  14.   

    看了你的文章。是子自定义listpreference的
    ListPreference extends DialogPreference
    那dialogpreference里 有showdialog可以继承但是单纯的preference是如何去show dialog的??
      

  15.   


    你这个方法我开贴的时候就已经写了而且这个办法不能屏蔽option menu 弹出的时候
      

  16.   

    在AndroidManifest.xml里设置
                    <category android:name="android.intent.category.LAUNCHER" />
                    <category android:name="android.intent.category.HOME" />
                    <category android:name="android.intent.category.DEFAULT" />
    可以将你的Home键的默认启动改为你的程序,这样就不需要在程序里去屏蔽它了。
      

  17.   

        遇到同样的menu出现屏蔽home键的问题,顶一下!!!
      

  18.   

    Dialog 在调用.show()之后 window.settype(xxxx);
      

  19.   

    Dialog 在调用.show()之后 dialog.getWindow().settype(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); //TYPE_KEYGUARD_DIALOG和 TYPE_KEYGUARD 应该都能屏蔽