From e6ff946cd4f40a0d4f3de51b6554e07b8d3cee93 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 15 Jan 2016 15:07:06 -0800 Subject: [PATCH] Switched the work profile badge used in the notifications Change-Id: I62616f1ae8fcda9953853b9859c69a9f1e6f44ca --- .../app/ApplicationPackageManager.java | 15 ++++++++-- core/java/android/app/Notification.java | 2 +- .../android/content/pm/PackageManager.java | 16 ++++++++++ .../drawable/ic_corp_badge_no_background.xml | 30 +++++++++++++++++++ .../layout/notification_template_header.xml | 1 + core/res/res/values/dimens.xml | 2 +- core/res/res/values/symbols.xml | 1 + .../android/test/mock/MockPackageManager.java | 6 ++++ 8 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 core/res/res/drawable/ic_corp_badge_no_background.xml diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 0afca9d5dcc74..220fb607289ad 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -1099,13 +1099,24 @@ public class ApplicationPackageManager extends PackageManager { @Override public Drawable getUserBadgeForDensity(UserHandle user, int density) { + return getManagedProfileIconForDensity(user, density, + com.android.internal.R.drawable.ic_corp_badge); + } + + @Override + public Drawable getUserBadgeForDensityNoBackground(UserHandle user, int density) { + return getManagedProfileIconForDensity(user, density, + com.android.internal.R.drawable.ic_corp_badge_no_background); + } + + private Drawable getManagedProfileIconForDensity(UserHandle user, int density, + int drawableId) { UserInfo userInfo = getUserIfProfile(user.getIdentifier()); if (userInfo != null && userInfo.isManagedProfile()) { if (density <= 0) { density = mContext.getResources().getDisplayMetrics().densityDpi; } - return Resources.getSystem().getDrawableForDensity( - com.android.internal.R.drawable.ic_corp_badge, density); + return Resources.getSystem().getDrawableForDensity(drawableId, density); } return null; } diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index a3610a3ffb63a..0f3aad9c56fab 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -2998,7 +2998,7 @@ public class Notification implements Parcelable private Drawable getProfileBadgeDrawable() { // Note: This assumes that the current user can read the profile badge of the // originating user. - return mContext.getPackageManager().getUserBadgeForDensity( + return mContext.getPackageManager().getUserBadgeForDensityNoBackground( new UserHandle(mContext.getUserId()), 0); } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index ba4d14c65be4d..89f687036a850 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -4266,6 +4266,22 @@ public abstract class PackageManager { */ public abstract Drawable getUserBadgeForDensity(UserHandle user, int density); + /** + * If the target user is a managed profile of the calling user or the caller + * is itself a managed profile, then this returns a drawable to use as a small + * icon to include in a view to distinguish it from the original icon. This version + * doesn't have background protection and should be used over a light background instead of + * a badge. + * + * @param user The target user. + * @param density The optional desired density for the badge as per + * {@link android.util.DisplayMetrics#densityDpi}. If not provided + * the density of the current display is used. + * @return the drawable or null if no drawable is required. + * @hide + */ + public abstract Drawable getUserBadgeForDensityNoBackground(UserHandle user, int density); + /** * If the target user is a managed profile of the calling user or the caller * is itself a managed profile, then this returns a copy of the label with diff --git a/core/res/res/drawable/ic_corp_badge_no_background.xml b/core/res/res/drawable/ic_corp_badge_no_background.xml new file mode 100644 index 0000000000000..b1bddfc98fca2 --- /dev/null +++ b/core/res/res/drawable/ic_corp_badge_no_background.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/core/res/res/layout/notification_template_header.xml b/core/res/res/layout/notification_template_header.xml index 595d08405d20b..163db30d6c28e 100644 --- a/core/res/res/layout/notification_template_header.xml +++ b/core/res/res/layout/notification_template_header.xml @@ -132,6 +132,7 @@ android:layout_height="@dimen/notification_badge_size" android:layout_gravity="center" android:layout_marginStart="4dp" + android:paddingTop="1dp" android:scaleType="fitCenter" android:visibility="gone" android:contentDescription="@string/notification_work_profile_content_description" diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index b2482cdcf82e4..f92e7f02892c9 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -275,7 +275,7 @@ 11dp - 16dp + 12dp diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index b46e32f240818..a5d0020d27978 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1265,6 +1265,7 @@ + diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index 81aa6c6eec3c1..5296d4d776572 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -532,6 +532,12 @@ public class MockPackageManager extends PackageManager { throw new UnsupportedOperationException(); } + /** @hide */ + @Override + public Drawable getUserBadgeForDensityNoBackground(UserHandle user, int density) { + throw new UnsupportedOperationException(); + } + @Override public CharSequence getUserBadgedLabel(CharSequence label, UserHandle user) { throw new UnsupportedOperationException();