diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/Activity.java | 2 | ||||
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 2376a95526aa..53e5cc8940ef 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -5866,7 +5866,7 @@ public class Activity extends ContextThemeWrapper */ public void setTaskDescription(ActivityManager.TaskDescription taskDescription) { if (mTaskDescription != taskDescription) { - mTaskDescription.copyFrom(taskDescription); + mTaskDescription.copyFromPreserveHiddenFields(taskDescription); // Scale the icon down to something reasonable if it is provided if (taskDescription.getIconFilename() == null && taskDescription.getIcon() != null) { final int size = ActivityManager.getLauncherLargeIconSizeInner(this); diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index aede1bb67f80..e3c8e4402e74 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -1222,6 +1222,27 @@ public class ActivityManager { mNavigationBarColor = other.mNavigationBarColor; } + /** + * Copies this the values from another TaskDescription, but preserves the hidden fields + * if they weren't set on {@code other} + * @hide + */ + public void copyFromPreserveHiddenFields(TaskDescription other) { + mLabel = other.mLabel; + mIcon = other.mIcon; + mIconFilename = other.mIconFilename; + mColorPrimary = other.mColorPrimary; + if (other.mColorBackground != 0) { + mColorBackground = other.mColorBackground; + } + if (other.mStatusBarColor != 0) { + mStatusBarColor = other.mStatusBarColor; + } + if (other.mNavigationBarColor != 0) { + mNavigationBarColor = other.mNavigationBarColor; + } + } + private TaskDescription(Parcel source) { readFromParcel(source); } |
