android5.0以上对于APP_SWITCH和HOME键的处理

在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;

    }

  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键。

相关文章
相关标签/搜索