2011-09-30 51 views
0

在我的應用程序中,我不希望用戶能夠按Home按鈕退出我的應用程序。有一個特定的原因是不允許用戶這樣做。任何人都可以建議什麼可以是實現這一目標的正確方法?不允許用戶使用主頁按鈕退出應用程序

目前我正在做的是覆蓋onKeyDown() -Method。它的代碼如下:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME) 
    { 
     Intent intent = new Intent(this, LockScreen.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
    } 
    return true; 
} 

清單文件我想提出修改如下:

<activity android:name=".LockScreen" 
    android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 
    <intent-filter>    
    <category android:name="android.intent.category.HOME"/> 
    </intent-filter> 
</activity> 
+0

是什麼原因(聽起來有點不好),是你的解決方案工作? –

+0

Yahh它適用於兩個主頁按鈕三次點擊。但它然後退出應用程序 – ASH

回答

4

我同意inazaruk,但如果你仍然想這樣做,那麼你需要重寫:

@Override 
public void onAttachedToWindow() { 

    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 

} 
+0

那麼這個解決方案爲我工作。目前我可以禁用目前的HOME鍵。感謝您的解決方案。 – ASH

+0

您應該接受幫助他人的答案,因爲它會浮動爲未答覆。 –

+0

此代碼會在Android 4上導致RuntimeException。 – Miriam

3

Android不支持此方案對於簡單的應用程序,所以你不能做這個。

閱讀CommonsWare的文章:Please ignore the Home Button。這將解釋爲什麼處理主頁按鈕你想要的方式不是一個好主意。

0

看看這個程序:Kid mode。它做你想做的事情,以防止孩子退出應用程序。

它這樣做,以便啓用時,此應用程序將成爲主屏幕應用程序,從而控制按主屏幕時發生的情況。

但是,用戶必須點擊才能將此應用程序設置爲默認主屏幕應用程序才能使其工作。

0

由於android使用堆棧結構,因此通過清除堆棧來關閉應用程序。每個後退按鈕單擊清除堆棧的頂部,這就是應用程序退出。點擊首頁突然關閉應用程序,但活動仍然在堆棧頂部。您可以在應用程序中間點擊HOME按鈕,然後再次輸入您的應用程序,您可以看到您仍然處於與HOME之前相同的活動狀態。

相關問題