From 6c4f9670f374bf3b1b61a67d92ebfcbc773be923 Mon Sep 17 00:00:00 2001 From: Tony Mak Date: Wed, 20 May 2020 11:29:45 +0100 Subject: [PATCH] Fix an issue that the icon rewritten logic not working in non-primary user 1.IconsContentProvider should be singleUser, i.e. it should run in user 0 only. 2.IconsContentProvider should get the icon from the calling user. Fixes: 157073154 Test: Run our mts. Test: Create a work profile. Select an email address, verify the icon. Test: Create a work profile. Install a browser in work profile only. Select a URL and verify the icon Change-Id: Idf4ef86f8f2aa110f755e9518cd151b943f2aea0 --- core/res/AndroidManifest.xml | 3 ++- .../android/server/textclassifier/IconsContentProvider.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 4bc570ad0adb9..d4cc636ec60bb 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -5477,13 +5477,14 @@ - + diff --git a/services/core/java/com/android/server/textclassifier/IconsContentProvider.java b/services/core/java/com/android/server/textclassifier/IconsContentProvider.java index d19a707770e2f..9b3176d9df679 100644 --- a/services/core/java/com/android/server/textclassifier/IconsContentProvider.java +++ b/services/core/java/com/android/server/textclassifier/IconsContentProvider.java @@ -25,6 +25,7 @@ import android.graphics.drawable.Icon; import android.net.Uri; import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor.AutoCloseOutputStream; +import android.os.UserHandle; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; @@ -51,7 +52,7 @@ public final class IconsContentProvider extends ContentProvider { try { final ResourceInfo res = IconsUriHelper.getInstance().getResourceInfo(uri); final Drawable drawable = Icon.createWithResource(res.packageName, res.id) - .loadDrawable(getContext()); + .loadDrawableAsUser(getContext(), UserHandle.getCallingUserId()); final byte[] data = getBitmapData(drawable); final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); final ParcelFileDescriptor readSide = pipe[0];