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

更多相关文章

  1. Android(安卓)Q&A
  2. Android(安卓)开机启动过程
  3. Android(安卓)Widget 小工具(两) 使用configure
  4. Android下打印调用栈
  5. Android中Message机制的灵活应用
  6. Android(安卓)Jetpack Compose总结
  7. Android(安卓)Notification使用
  8. 转Android(安卓)安全攻防(一):SEAndroid的编译
  9. 箭头函数的基础使用

随机推荐

  1. com.android.cts.devicepolicy.ManagedPr
  2. android 扫描sdcard下的图片
  3. RF Analyzer for Android(安卓)安卓平台
  4. android 拍照和上传
  5. List.addAll(null);
  6. smali文件语法参考
  7. Android(安卓)SQLite数据库增删改查
  8. android 混淆代码gson数据nullpointerexc
  9. GestureDetector使用实例
  10. Android(安卓)直接通过JNI访问驱动