android5.0以上對於APP_SWITCH和HOME鍵的處理

在android5.0項目開發遇到需要捕獲HOME鍵的情況,經過查找,實現函數如下:

在framework/base/services/core/java/com/android/server/policy/PhoneWindowManager.java中添加如下函數:

    private boolean getTopStackActivity(String fullClassName){

        ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);

        RunningTaskInfo info = am.getRunningTasks(1).get(0);

        if(info == null || info.topActivity == null){

            Log.e(TAG, "Top activity is null, error");

            return false;

        }

        if(fullClassName.equals(info.topActivity.getClassName())){

            Log.d(TAG, "Top Activity:"+info.topActivity.getClassName());

            return true;

        }

        return false;

    }

  1. HOME鍵處理:

    在 interceptKeyBeforeDispatching函數的if(keyCode == KeyEvent.KEYCODE_HOME)中添加如上函數即可在應用層捕獲HOME鍵。

  2. APP_SWITCH鍵處理:

    在interceptKeyBeforeDispatching函數的else if(keyCode == KeyEvent.KEYCODE_MENU)下的if(keyCode == KeyEvent.KEYCODE_APP_SWITCH)中添加如上函數即可在應用層捕獲APP_SWITCH鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章