9.自定義HOME按鍵
9.1 問題
應用程式需要實現與按下物理HOME按鍵一樣的功能。
9.2 解決方案
使用者按下HOME按鍵的行為會發送一個Intent給系統,要求系統載入Home Activity。這與在應用程式中啟動其他的Activity並沒有什麼區別,你要做的就是構建合適的Intent以實現該效果。
9.3 實現機制
把下面這幾行程式碼新增到Activity中要實現該功能的地方:
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent);
該功能的一個常見用途就是過載BACK按鍵,讓使用者按下此按鍵時直接返回主螢幕而不能回到前一個Activity。當要保護前臺Activity之前的Activity(例如登入介面)時,這是很有用的方法。如果執行BACK按鍵的預設行為,就要可能會讓使用者在未授權的情況下訪問系統。
要點:
在修改系統按鍵的行為時,務必確保不會擾亂使用者對此按鍵所完成動作的預期。
下面這個示例利用前兩個範例中結束的技術,實現了在Activity中按下BACK按鍵時返回到主螢幕的行為:
@Override public void onBackPressed() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); }