From 508ff55e8cc6580aa303c19ad0388e08b1f8851e Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Mon, 15 Feb 2016 19:31:50 -0800 Subject: [PATCH] Force resize pre-N apps that don't have fixed orientation. We were previously only doing it for SCREEN_ORIENTATION_UNSPECIFIED, but there are other orientation settings that aren't fixed that we need to handle. Change-Id: If21fcd8312b6267407d94b6646158ac6eae44b44 --- core/java/android/content/pm/ActivityInfo.java | 16 ++++++++++++++++ core/java/android/content/pm/PackageParser.java | 3 +-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index f58b16a7204fa..14ef61ce63d40 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -789,6 +789,22 @@ public class ActivityInfo extends ComponentInfo } } + /** + * Returns true if the activity's orientation is fixed. + * @hide + */ + boolean isFixedOrientation() { + return screenOrientation == SCREEN_ORIENTATION_LANDSCAPE + || screenOrientation == SCREEN_ORIENTATION_PORTRAIT + || screenOrientation == SCREEN_ORIENTATION_SENSOR_LANDSCAPE + || screenOrientation == SCREEN_ORIENTATION_SENSOR_PORTRAIT + || screenOrientation == SCREEN_ORIENTATION_REVERSE_LANDSCAPE + || screenOrientation == SCREEN_ORIENTATION_REVERSE_PORTRAIT + || screenOrientation == SCREEN_ORIENTATION_USER_LANDSCAPE + || screenOrientation == SCREEN_ORIENTATION_USER_PORTRAIT + || screenOrientation == SCREEN_ORIENTATION_LOCKED; + } + /** @hide */ public static boolean isResizeableMode(int mode) { return mode == RESIZE_MODE_RESIZEABLE diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 5ae8d4cf0ce41..562a3e7a1934f 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -3447,8 +3447,7 @@ public class PackageParser { } } else if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.N) { a.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; - } else if (a.info.screenOrientation == SCREEN_ORIENTATION_UNSPECIFIED - && (a.info.flags & FLAG_IMMERSIVE) == 0) { + } else if (!a.info.isFixedOrientation() && (a.info.flags & FLAG_IMMERSIVE) == 0) { a.info.resizeMode = RESIZE_MODE_FORCE_RESIZEABLE; }