解决方案 »

  1.   

    监听HOME键,不需要在Manifest.xml里面屏蔽的吧,直接在onKeyDown里面捕获,捕获到以后干自己的事情然后直接返回,不要调用return super.onKeyDown(keyCode, event);
    楼主可以试试
      

  2.   

    我这要处理的时候,没有打出log,应该可以理解为没有捕获到吧。
    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            Log.d("aeon","onKeyDown");
            if(KeyEvent.KEYCODE_HOME==keyCode)
                Log.d("aeon","home");
            return super.onKeyDown(keyCode, event);
        
      

  3.   

    不知LZ为什么要监听home键,如果要处理用户按了home键程序要执行的操作,可以去看下onUserLeaveHint()函数,按home键会去执行该函数。
      

  4.   


    这位兄台说得有道理。为什么要监听HOEM。
    另外,据我所知,framework是不是会提供监听HOEM的,因为如果可以监听,恶意程序把HOME键的功能可以屏蔽掉。
    可以试试preguide,好像这是个东西。
      

  5.   

    可以监听这个广播 
    ACTION_CLOSE_SYSTEM_DIALOGS
    来监听home键
      

  6.   

    这个确实可行,执行在onSaveInstanceState之前。
      

  7.   


    这位兄台说得有道理。为什么要监听HOEM。
    另外,据我所知,framework是不是会提供监听HOEM的,因为如果可以监听,恶意程序把HOME键的功能可以屏蔽掉。
    可以试试preguide,好像这是个东西。
    android4.1 和4.2对home键是有监听的,只是不知道低版本有没有。
    还有你说的这个preguide是什么。我不是很清楚,可以具体点不
      

  8.   


    这位兄台说得有道理。为什么要监听HOEM。
    另外,据我所知,framework是不是会提供监听HOEM的,因为如果可以监听,恶意程序把HOME键的功能可以屏蔽掉。
    可以试试preguide,好像这是个东西。
    android4.1 和4.2对home键是有监听的,只是不知道低版本有没有。
    还有你说的这个preguide是什么。我不是很清楚,可以具体点不4.1/4.2可能是新提供的机能吧。低版本据我所知,应该是没有。
    因为我们当时做过一个项目,也是需要知道home键按下。我们当时的做法是,把底层的framework修改,在home按下的事件那,发一个广播消息。然后重新编译。
    当然,这对于一个普通的APP开发,不行,因为改不了底层。
      

  9.   


    这位兄台说得有道理。为什么要监听HOEM。
    另外,据我所知,framework是不是会提供监听HOEM的,因为如果可以监听,恶意程序把HOME键的功能可以屏蔽掉。
    可以试试preguide,好像这是个东西。
    android4.1 和4.2对home键是有监听的,只是不知道低版本有没有。
    还有你说的这个preguide是什么。我不是很清楚,可以具体点不4.1/4.2可能是新提供的机能吧。低版本据我所知,应该是没有。
    因为我们当时做过一个项目,也是需要知道home键按下。我们当时的做法是,把底层的framework修改,在home按下的事件那,发一个广播消息。然后重新编译。
    当然,这对于一个普通的APP开发,不行,因为改不了底层。
    谢谢了,你是搞系统定制的?
      

  10.   

    这位兄弟你好,我最近也是遇到这个问题,我想屏蔽掉home键的功能,现在是能监听到按下home键,但是还是会直接返回到主界面,不知道你是怎么操作才可以屏蔽掉的呢?
      

  11.   

    #5楼正解,想要完全监听home键需要在framework层去处理。/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java里面去修改private void handleLongPressOnHome() 这个方法。