From 2b4306a8ecd64f6e03498104f314600f9cc7507c Mon Sep 17 00:00:00 2001 From: Beverly Date: Mon, 27 Apr 2020 16:15:15 -0400 Subject: Add badge colors for dark theme Test: manual Test: atest UserManagerTest#testProfileTypeInformation Fixes: 149669756 Change-Id: Ib3fd377a4902bbe936d574dc52bac4eae6e25dd4 --- .../java/android/app/ApplicationPackageManager.java | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'core/java/android/app/ApplicationPackageManager.java') diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index f883b60b534f..6bd8fd7c6ecf 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -1574,7 +1574,7 @@ public class ApplicationPackageManager extends PackageManager { } Drawable badge = new LauncherIcons(mContext).getBadgeDrawable( getUserManager().getUserIconBadgeResId(user.getIdentifier()), - getUserBadgeColor(user)); + getUserBadgeColor(user, false)); return getBadgedDrawable(icon, badge, null, true); } @@ -1588,8 +1588,16 @@ public class ApplicationPackageManager extends PackageManager { return getBadgedDrawable(drawable, badgeDrawable, badgeLocation, true); } - /** Returns the color of the user's actual badge (not the badge's shadow). */ - private int getUserBadgeColor(UserHandle user) { + /** + * Returns the color of the user's actual badge (not the badge's shadow). + * @param checkTheme whether to check the theme to determine the badge color. This should be + * true if the background is determined by the theme. Otherwise, if + * checkTheme is false, returns the color assuming a light background. + */ + private int getUserBadgeColor(UserHandle user, boolean checkTheme) { + if (checkTheme && mContext.getResources().getConfiguration().isNightModeActive()) { + return getUserManager().getUserBadgeDarkColor(user.getIdentifier()); + } return getUserManager().getUserBadgeColor(user.getIdentifier()); } @@ -1603,11 +1611,14 @@ public class ApplicationPackageManager extends PackageManager { } Drawable badgeForeground = getDrawableForDensity( getUserManager().getUserBadgeResId(user.getIdentifier()), density); - badgeForeground.setTint(getUserBadgeColor(user)); + badgeForeground.setTint(getUserBadgeColor(user, false)); Drawable badge = new LayerDrawable(new Drawable[] {badgeColor, badgeForeground }); return badge; } + /** + * Returns the badge color based on whether device has dark theme enabled or not. + */ @Override public Drawable getUserBadgeForDensityNoBackground(UserHandle user, int density) { if (!hasUserBadge(user.getIdentifier())) { @@ -1616,7 +1627,7 @@ public class ApplicationPackageManager extends PackageManager { Drawable badge = getDrawableForDensity( getUserManager().getUserBadgeNoBackgroundResId(user.getIdentifier()), density); if (badge != null) { - badge.setTint(getUserBadgeColor(user)); + badge.setTint(getUserBadgeColor(user, true)); } return badge; } -- cgit v1.2.3