Android 10 不拦截home和power
Index: android/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
===================================================================
private void interceptPowerKeyUp(KeyEvent event, boolean interactive, boolean canceled) {
@@ -2739,7 +2740,8 @@
handler = new DisplayHomeButtonHandler(displayId);
mDisplayHomeButtonHandlers.put(displayId, handler);
}
- return handler.handleHomeButton(win, event);
+ handler.handleHomeButton(win, event);
+ return 0;//允许下发按键
} else if (keyCode == KeyEvent.KEYCODE_MENU) {
// Hijack modified menu keys for debugging features
final int chordBug = KeyEvent.META_SHIFT_ON;
@@ -3969,7 +3971,8 @@
mPowerKeyHandled ? 1 : 0, mPowerKeyPressCounter);
// Any activity on the power button stops the accessibility shortcut
cancelPendingAccessibilityShortcutAction();
- result &= ~ACTION_PASS_TO_USER;
+ //result &= ~ACTION_PASS_TO_USER;
+ result = 1; //不拦截power键
isWakeKey = false; // wake-up will be handled separately
if (down) {
interceptPowerKeyDown(event, interactive);
@@ -4149,7 +4152,6 @@
wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey,
PowerManager.WAKE_REASON_WAKE_KEY, "android.policy:KEY");
}
-
return result;
}
熄屏情况时候power键有时候被拦截
Dropping event due to no window focus
Index: android/frameworks/base/core/java/android/view/ViewRootImpl.java
===================================================================
--- android/frameworks/base/core/java/android/view/ViewRootImpl.java (revision 43633)
+++ android/frameworks/base/core/java/android/view/ViewRootImpl.java (revision 43634)
@@ -4888,6 +4888,9 @@
}
// Drop non-terminal input events.
+ if (isPower(q.mEvent)) {
+ return false;
+ }
Slog.w(mTag, "Dropping event due to no window focus: " + q.mEvent);
return true;
}
@@ -4907,6 +4910,14 @@
return false;
}
}
+
+ private boolean isPower(InputEvent event) {
+ if (event instanceof KeyEvent) {
+ return ((KeyEvent) event).getKeyCode() == KeyEvent.KEYCODE_POWER;
+ } else {
+ return false;
+ }
+ }
}