summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/Window.java6
-rw-r--r--core/java/android/view/WindowManager.java4
-rw-r--r--core/res/AndroidManifest.xml4
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java23
4 files changed, 29 insertions, 8 deletions
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 3616622..5811ef9 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -869,9 +869,9 @@ public abstract class Window {
}
private void setPrivateFlags(int flags, int mask) {
- if ((flags & mask & WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_POWER_KEY) != 0){
- mContext.enforceCallingOrSelfPermission("android.permission.PREVENT_POWER_KEY",
- "No permission to prevent power key");
+ if ((flags & mask & WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_SYSTEM_KEYS) != 0){
+ mContext.enforceCallingOrSelfPermission("android.permission.PREVENT_SYSTEM_KEYS",
+ "No permission to prevent system key");
}
final WindowManager.LayoutParams attrs = getAttributes();
attrs.privateFlags = (attrs.privateFlags & ~mask) | (flags & mask);
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 1125b44..c7a9650 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -1154,10 +1154,10 @@ public interface WindowManager extends ViewManager {
public static final int PRIVATE_FLAG_WAS_NOT_FULLSCREEN = 0x02000000;
/**
- * Window flag: Overrides default power key behavior
+ * Window flag: Overrides default system key behavior.
* {@hide}
*/
- public static final int PRIVATE_FLAG_PREVENT_POWER_KEY = 0x20000000;
+ public static final int PRIVATE_FLAG_PREVENT_SYSTEM_KEYS = 0x20000000;
/**
* Window flag: adding additional blur layer and set this as masking layer
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index a6de699..ea0e39c 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1239,10 +1239,10 @@
<permission android:name="android.permission.NOTIFY_PENDING_SYSTEM_UPDATE"
android:protectionLevel="signature|privileged" />
- <!-- Allows an application to override the power key action
+ <!-- Allows an application to override the system key actions
@hide <p>Not for use by third-party applications.
-->
- <permission android:name="android.permission.PREVENT_POWER_KEY"
+ <permission android:name="android.permission.PREVENT_SYSTEM_KEYS"
android:protectionLevel="signature|privileged" />
<!-- =========================================== -->
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index bdddd7d..339e269 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3257,6 +3257,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return 0;
}
+ if (mTopFullscreenOpaqueWindowState != null &&
+ (mTopFullscreenOpaqueWindowState.getAttrs().privateFlags
+ & WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_SYSTEM_KEYS) != 0
+ && mScreenOnFully) {
+ return 0;
+ }
+
if (down) {
if (mPressOnMenuBehavior == KEY_ACTION_APP_SWITCH
|| mLongPressOnMenuBehavior == KEY_ACTION_APP_SWITCH) {
@@ -3322,6 +3329,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
return 0;
} else if (keyCode == KeyEvent.KEYCODE_APP_SWITCH) {
+ if (mTopFullscreenOpaqueWindowState != null &&
+ (mTopFullscreenOpaqueWindowState.getAttrs().privateFlags
+ & WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_SYSTEM_KEYS) != 0
+ && mScreenOnFully) {
+ return 0;
+ }
+
if (!keyguardOn) {
if (down) {
if (mPressOnAppSwitchBehavior == KEY_ACTION_APP_SWITCH
@@ -5753,6 +5767,13 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
case KeyEvent.KEYCODE_HOME:
+ if (mTopFullscreenOpaqueWindowState != null &&
+ (mTopFullscreenOpaqueWindowState.getAttrs().privateFlags
+ & WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_SYSTEM_KEYS) != 0
+ && mScreenOnFully) {
+ return result;
+ }
+
if (down && !interactive && mHomeWakeScreen) {
isWakeKey = true;
}
@@ -5834,7 +5855,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case KeyEvent.KEYCODE_POWER: {
if (mTopFullscreenOpaqueWindowState != null &&
(mTopFullscreenOpaqueWindowState.getAttrs().privateFlags
- & WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_POWER_KEY) != 0
+ & WindowManager.LayoutParams.PRIVATE_FLAG_PREVENT_SYSTEM_KEYS) != 0
&& mScreenOnFully) {
return result;
}