diff --git a/api/current.txt b/api/current.txt index daddd40029547..4d98e9c8f2b7b 100644 --- a/api/current.txt +++ b/api/current.txt @@ -437,7 +437,9 @@ package android { field public static final deprecated int dayOfWeekBackground = 16843924; // 0x1010494 field public static final deprecated int dayOfWeekTextAppearance = 16843925; // 0x1010495 field public static final int debuggable = 16842767; // 0x101000f + field public static final int defaultHeight = 16844021; // 0x10104f5 field public static final int defaultValue = 16843245; // 0x10101ed + field public static final int defaultWidth = 16844020; // 0x10104f4 field public static final int delay = 16843212; // 0x10101cc field public static final int dependency = 16843244; // 0x10101ec field public static final int descendantFocusability = 16842993; // 0x10100f1 @@ -680,10 +682,8 @@ package android { field public static final int indicatorStart = 16843729; // 0x10103d1 field public static final int inflatedId = 16842995; // 0x10100f3 field public static final int initOrder = 16842778; // 0x101001a - field public static final int initialHeight = 16844021; // 0x10104f5 field public static final int initialKeyguardLayout = 16843714; // 0x10103c2 field public static final int initialLayout = 16843345; // 0x1010251 - field public static final int initialWidth = 16844020; // 0x10104f4 field public static final int innerRadius = 16843359; // 0x101025f field public static final int innerRadiusRatio = 16843163; // 0x101019b field public static final deprecated int inputMethod = 16843112; // 0x1010168 diff --git a/api/system-current.txt b/api/system-current.txt index 794595e1d1cca..8265a85cadd00 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -532,7 +532,9 @@ package android { field public static final deprecated int dayOfWeekBackground = 16843924; // 0x1010494 field public static final deprecated int dayOfWeekTextAppearance = 16843925; // 0x1010495 field public static final int debuggable = 16842767; // 0x101000f + field public static final int defaultHeight = 16844021; // 0x10104f5 field public static final int defaultValue = 16843245; // 0x10101ed + field public static final int defaultWidth = 16844020; // 0x10104f4 field public static final int delay = 16843212; // 0x10101cc field public static final int dependency = 16843244; // 0x10101ec field public static final int descendantFocusability = 16842993; // 0x10100f1 @@ -775,10 +777,8 @@ package android { field public static final int indicatorStart = 16843729; // 0x10103d1 field public static final int inflatedId = 16842995; // 0x10100f3 field public static final int initOrder = 16842778; // 0x101001a - field public static final int initialHeight = 16844021; // 0x10104f5 field public static final int initialKeyguardLayout = 16843714; // 0x10103c2 field public static final int initialLayout = 16843345; // 0x1010251 - field public static final int initialWidth = 16844020; // 0x10104f4 field public static final int innerRadius = 16843359; // 0x101025f field public static final int innerRadiusRatio = 16843163; // 0x101019b field public static final deprecated int inputMethod = 16843112; // 0x1010168 diff --git a/api/test-current.txt b/api/test-current.txt index 8335df5674fc7..0b625750db123 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -437,7 +437,9 @@ package android { field public static final deprecated int dayOfWeekBackground = 16843924; // 0x1010494 field public static final deprecated int dayOfWeekTextAppearance = 16843925; // 0x1010495 field public static final int debuggable = 16842767; // 0x101000f + field public static final int defaultHeight = 16844021; // 0x10104f5 field public static final int defaultValue = 16843245; // 0x10101ed + field public static final int defaultWidth = 16844020; // 0x10104f4 field public static final int delay = 16843212; // 0x10101cc field public static final int dependency = 16843244; // 0x10101ec field public static final int descendantFocusability = 16842993; // 0x10100f1 @@ -680,10 +682,8 @@ package android { field public static final int indicatorStart = 16843729; // 0x10103d1 field public static final int inflatedId = 16842995; // 0x10100f3 field public static final int initOrder = 16842778; // 0x101001a - field public static final int initialHeight = 16844021; // 0x10104f5 field public static final int initialKeyguardLayout = 16843714; // 0x10103c2 field public static final int initialLayout = 16843345; // 0x1010251 - field public static final int initialWidth = 16844020; // 0x10104f4 field public static final int innerRadius = 16843359; // 0x101025f field public static final int innerRadiusRatio = 16843163; // 0x101019b field public static final deprecated int inputMethod = 16843112; // 0x1010168 diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index 10b8a30a2fb12..43a0cc77d492e 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -839,7 +839,7 @@ public class ActivityInfo extends ComponentInfo + lockTaskLaunchModeToString(lockTaskLaunchMode)); } if (layout != null) { - pw.println(prefix + "initialLayout=" + layout.width + "|" + pw.println(prefix + "defaultLayout=" + layout.width + "|" + layout.widthFraction + ", " + layout.height + "|" + layout.heightFraction + ", " + layout.gravity); } diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 654396bc5dfa1..1b122307482c0 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -514,6 +514,14 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { */ public static final int PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER = 1 << 10; + /** + * When set, the activities associated with this application are resizeable by default. + * @see android.R.styleable#AndroidManifestActivity_resizeableActivity + * + * @hide + */ + public static final int PRIVATE_FLAG_RESIZEABLE_ACTIVITIES = 1 << 11; + /** * Private/hidden flags. See {@code PRIVATE_FLAG_...} constants. * {@hide} diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 44cd0039dc097..09b85c93e050e 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -84,6 +84,7 @@ import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE_AND_PIPABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; +import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_RESIZEABLE_ACTIVITIES; import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST; import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME; import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING; @@ -2642,6 +2643,11 @@ public class PackageParser { ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_ENCRYPTION_AWARE; } + if (sa.getBoolean(R.styleable.AndroidManifestApplication_resizeableActivity, + owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.N)) { + ai.privateFlags |= PRIVATE_FLAG_RESIZEABLE_ACTIVITIES; + } + String str; str = sa.getNonConfigurationString( com.android.internal.R.styleable.AndroidManifestApplication_permission, 0); @@ -3232,7 +3238,10 @@ public class PackageParser { a.info.resizeMode = RESIZE_MODE_UNRESIZEABLE; if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.N) { - if (sa.getBoolean(R.styleable.AndroidManifestActivity_resizeableActivity, true)) { + final boolean appDefault = (owner.applicationInfo.privateFlags + & PRIVATE_FLAG_RESIZEABLE_ACTIVITIES) != 0; + if (sa.getBoolean( + R.styleable.AndroidManifestActivity_resizeableActivity, appDefault)) { if (sa.getBoolean(R.styleable.AndroidManifestActivity_supportsPictureInPicture, false)) { a.info.resizeMode = RESIZE_MODE_RESIZEABLE_AND_PIPABLE; @@ -3378,25 +3387,25 @@ public class PackageParser { int height = -1; float heightFraction = -1f; final int widthType = sw.getType( - com.android.internal.R.styleable.AndroidManifestLayout_initialWidth); + com.android.internal.R.styleable.AndroidManifestLayout_defaultWidth); if (widthType == TypedValue.TYPE_FRACTION) { widthFraction = sw.getFraction( - com.android.internal.R.styleable.AndroidManifestLayout_initialWidth, + com.android.internal.R.styleable.AndroidManifestLayout_defaultWidth, 1, 1, -1); } else if (widthType == TypedValue.TYPE_DIMENSION) { width = sw.getDimensionPixelSize( - com.android.internal.R.styleable.AndroidManifestLayout_initialWidth, + com.android.internal.R.styleable.AndroidManifestLayout_defaultWidth, -1); } final int heightType = sw.getType( - com.android.internal.R.styleable.AndroidManifestLayout_initialHeight); + com.android.internal.R.styleable.AndroidManifestLayout_defaultHeight); if (heightType == TypedValue.TYPE_FRACTION) { heightFraction = sw.getFraction( - com.android.internal.R.styleable.AndroidManifestLayout_initialHeight, + com.android.internal.R.styleable.AndroidManifestLayout_defaultHeight, 1, 1, -1); } else if (heightType == TypedValue.TYPE_DIMENSION) { height = sw.getDimensionPixelSize( - com.android.internal.R.styleable.AndroidManifestLayout_initialHeight, + com.android.internal.R.styleable.AndroidManifestLayout_defaultHeight, -1); } int gravity = sw.getInt( diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 6eba78a4ce2b9..c744bbdd7495f 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1288,6 +1288,7 @@ + - - - - + +

NOTE: A task's root activity value is applied to all additional + activities launched in the task. That is if the root activity of a task set minimal size, + then the system will set the same minimal size on all other activities in the task. It will + also ignore any other minimal size attributes of non-root activities. --> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index a2ad09b248c3c..bbbb963f4dff4 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2662,8 +2662,8 @@ - - + +