在android5.0項目開發遇到須要捕獲HOME鍵的狀況,通過查找,實現函數以下:
java
在framework/base/services/core/java/com/android/server/policy/PhoneWindowManager.java中添加以下函數:android
private boolean getTopStackActivity(String fullClassName){ide
ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
函數
RunningTaskInfo info = am.getRunningTasks(1).get(0);
spa
if(info == null || info.topActivity == null){server
Log.e(TAG, "Top activity is null, error");
ci
return false;開發
}
get
if(fullClassName.equals(info.topActivity.getClassName())){it
Log.d(TAG, "Top Activity:"+info.topActivity.getClassName());
return true;
}
return false;
}
HOME鍵處理:
在 interceptKeyBeforeDispatching函數的if(keyCode == KeyEvent.KEYCODE_HOME)中添加如上函數便可在應用層捕獲HOME鍵。
APP_SWITCH鍵處理:
在interceptKeyBeforeDispatching函數的else if(keyCode == KeyEvent.KEYCODE_MENU)下的if(keyCode == KeyEvent.KEYCODE_APP_SWITCH)中添加如上函數便可在應用層捕獲APP_SWITCH鍵。