2013-08-28 22 views
0

我想在我的應用程序中用戶點擊的主頁按鈕上編寫一些代碼。在主頁按鈕點擊時應用程序沒有被最小化

我寫下面的代碼:

@Override 
     public void onAttachedToWindow() { 
      super.onAttachedToWindow(); 
      this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
     } 

    @Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) {  

      if(keyCode == KeyEvent.KEYCODE_HOME) 
      { 
       //The Code Want to Perform. 
       Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show(); 

      } 
      return true; 
     } 

此代碼給我敬酒的消息,但不minize我的應用程序。

一旦我刪除下面的代碼:

@Override 
      public void onAttachedToWindow() { 
       super.onAttachedToWindow(); 
       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
      } 

只保留:

@Override 
      public boolean onKeyDown(int keyCode, KeyEvent event) {  

       if(keyCode == KeyEvent.KEYCODE_HOME) 
       { 
        //The Code Want to Perform. 
        Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show(); 

       } 
       return true; 
      } 

這並不表明我敬酒消息。

請幫幫我。

我也試過:

返回false

的onPause方法

,但沒有奏效。

+0

陌生,它應該是默認的工作:/ –

回答

2

你應該有這樣的代碼,

@Override 
      public void onAttachedToWindow() { 
       super.onAttachedToWindow(); 
       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
      } 
在你的代碼

。刪除此操作不會觸發Home鍵操作。

我們儘量減少應用程序,請執行下列操作,

@Override 
       public boolean onKeyDown(int keyCode, KeyEvent event) {  

        if(keyCode == KeyEvent.KEYCODE_HOME) 
        { 
         //The Code Want to Perform. 
         Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show(); 
       Intent gotoHome= new Intent(Intent.ACTION_MAIN); 
       gotoHome.addCategory(Intent.CATEGORY_HOME); 
       gotoHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(gotoHome); 
        } 
        return true; 
       } 

但我認爲這個解決方案沒有更多的作品更高API層級。

+0

http://developer.android。 COM /參考/機器人/視圖/ KeyEvent.html#KEYCODE_HOME。可能嗎?其處理的框架 – Raghunandan

+0

我不認爲這是可能的http://stackoverflow.com/questions/13139970/override-home-key-in-android-ics – Raghunandan

+1

謝謝,它爲我工作。 –

2

嘗試使用return false,因此您不會捕獲單擊事件,而是將它一起發送到操作系統。

+0

我想還,但它不工作 –

2

在onKeyDown中返回true表示事件已被處理。

將您的代碼修改爲return false,以便事件由OS進一步處理。

例如:

 public boolean onKeyDown(int keyCode, KeyEvent event) {  

      if(keyCode == KeyEvent.KEYCODE_HOME) 
      { 
       //The Code Want to Perform. 
       Toast.makeText(getApplicationContext(), flag+"In Here", Toast.LENGTH_SHORT).show(); 

      } 
      return false; // Signals the KeyEvent.KEYCODE_HOME to be processed further. 
     } 

onKeyDown文檔

相關問題