android12 framework层 :app监听POWER键
diff --git a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
index e3a2c69..9adde7a 100755
--- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3958,7 +3958,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
break;
}
- case KeyEvent.KEYCODE_POWER: {
+ case KeyEvent.KEYCODE_POWER:
+ if(isTopCurRunningPackage("com.demo.key")){
+ result |= ACTION_PASS_TO_USER;
+ return 1;
+ } else {
EventLogTags.writeInterceptPower(
KeyEvent.actionToString(event.getAction()),
mPowerKeyHandled ? 1 : 0,
@@ -4145,6 +4149,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return result;
}
+ private boolean isTopCurRunningPackage(String packagename){
+ ActivityManager mActivityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
+ ComponentName mComponentName = mActivityManager.getRunningTasks(1).get(0).topActivity;
+ String CurPackageName = mComponentName.getPackageName();
+ if(packagename.equals(CurPackageName)){
+ return true;
+ }
+ return false;
+ }
+
private void handleKeyGesture(KeyEvent event, boolean interactive) {
if (mKeyCombinationManager.interceptKey(event, interactive)) {
// handled by combo keys manager.