2013-10-09 40 views
0

我曾嘗試以下方法來覆蓋主屏幕按鈕: -要覆蓋HOME_BUTTON安卓

  1. 使用的KeyDown方法。

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        Log.e("Pressed", "" + keyCode); 
    
    if (keyCode == KeyEvent.KEYCODE_HOME) 
    { 
        Log.e("HOME_PRESSED", "Ignoring HOME Button."); 
        return true; 
    }  
    else if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
        Log.e("BACK_PRESSED", "Ignore back pressing."); 
        return true; 
    } 
         return super.onKeyDown(keyCode, event); 
    } 
    
  2. 通過使用NewIntent方法。

    @Override 
        protected void onNewIntent(Intent intent) {  
    super.onNewIntent(intent);  
    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_MAIN)) 
    { 
        Log.e("MAIN_PRESSED", "Ignoring MAIN Button."); 
    } 
    } 
    

但我無法重寫HOME按鈕按下事件。

因此,根據我的知識和日誌,我發現每次按Home按鈕。

它發生火災ACT-AM_ON_PAUSE_CALLED(不瞭解它)

我試圖谷歌這個東西瞭解更多關於它,但沒有發現相關!

請幫忙覆蓋應用程序中的HOME按鈕。

+0

看一看這個鏈接: http://stackoverflow.com/questions/5039500/android-overriding-home-key –

+2

爲什麼?爲什麼應用程序的行爲與所有其他應用程序的行爲不同,並且用戶無法理解?除了啓動器之外,如果應用程序發現了一種重寫家庭的方法(這會利用一個bug),那麼它就不會長時間保留在我的設備上。 – Simon

+1

@西蒙我覺得這只是他老闆的又一個愚蠢的要求,我自己也習慣了被愚弄和奇怪的事情所困擾! –

回答

1

從接受的答案here 你不能覆蓋它,但你可以添加一些代碼來的onStop(),這是在home鍵被稱爲點擊

+0

這個回答適合我。讓我試試看。 :) – Harpreet

+0

它運作良好!謝謝。我忽略了這些有用的方法。 – Harpreet

+0

不客氣。 –

2

一般不建議覆蓋Android OS的主頁按鈕。當應用程序出現問題並且您只想離開時,主頁按鈕是一個「安全」按鈕。如果你願意的話,它是一種「彈出」按鈕。

您可以通過在清單中將其聲明爲應用程序/操作來覆蓋它,只要按下主頁按鈕,用戶就可以選擇每當Home按鈕被點擊並將您的應用程序設置爲默認選項。但是,此方法會要求用戶在您的應用程序和默認主頁操作之間進行選擇並指定默認值(否則,每次按Home按鈕時都必須在這兩個選項之間進行選擇) - 這完全不被推薦(糟糕的用戶體驗)。

1

那是不可能的,它已被禁止重寫它(安全問題)。這是由框架處理,你不能做你喜歡它。