现在有一个需求, 希望这个keycode先由app判断, 如果app处理了, 就采用app的处理, 如果app没有处理, 再由framework统一处理, 请问这样的过程需要怎么实现?

解决方案 »

  1.   

    主要是屏蔽home键和返回键@Override
      public boolean onKeyDown(int keyCode, KeyEvent event)
      {
        // TODO Auto-generated method stub
        返回键屏蔽可以直接返回true就可以了
        if(keyCode == KeyEvent.KEYCODE_BACK){      
          
           return true;     
        }
        else if(keyCode == KeyEvent.KEYCODE_HOME)//home键处理
         {      return true;
        }
        return super.onKeyDown(keyCode, event);
      }  @Override
      public void onAttachedToWindow()
      {
        // TODO Auto-generated method stub
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
        super.onAttachedToWindow();
      }  加权限禁止Home键
      <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
      

  2.   

    如果你不想屏蔽home可以这样显示桌面      Intent i= new Intent(Intent.ACTION_MAIN);
          i.addCategory(Intent.CATEGORY_HOME);
          startActivity(i);      
      

  3.   

    答非所问啊, 我自己找了一下, 发现在PhoneWindow里有这么一段代码:final Callback cb = getCallback();
    final boolean handled = cb != null && mFeatureId < 0 ? cb.dispatchKeyEvent(event)
            : super.dispatchKeyEvent(event);
    if (handled) {
        return true;
    }
    return isDown ? PhoneWindow.this.onKeyDown(mFeatureId, event.getKeyCode(), event)
            : PhoneWindow.this.onKeyUp(mFeatureId, event.getKeyCode(), event);所以把响应写在PhoneWindow.onKeyUp()里应该可以实现吧, 不知道会不会有问题.
      

  4.   

    看你是要在framework层处理这些 那我理解错了 以为你要在应用层处理 。