From cd516c8d46ad16b1ad266a23321b79a039e88696 Mon Sep 17 00:00:00 2001 From: Jun Lan Date: Mon, 18 Dec 2023 17:00:39 +0800 Subject: [PATCH] Fix work profile apps are in Uninstalled Context: work profile apps needs to pass userId to packageManager to get the uid. Fixed screenshot: https://screenshot.googleplex.com/AkXfMWvmREyQJvv Bug: 315477872 Fix: 315477872 Test: manual Change-Id: I96eb42ef6ce27f15415f0e1fc32060d69b3fab2d --- .../settings/fuelgauge/BatteryUtils.java | 20 ++++++++++++++++++- .../batteryusage/BatteryDiffEntry.java | 12 +++++------ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 5a808f2d485..f4217b6bf48 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -144,7 +144,6 @@ public class BatteryUtils { sInstance = null; } - /** Gets the process time */ public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, int which) { if (uid == null) { @@ -344,6 +343,25 @@ public class BatteryUtils { } } + /** + * Find package uid from package name + * + * @param packageName used to find the uid + * @param userId The user handle identifier to look up the package under + * @return uid for packageName, or {@link #UID_NULL} if exception happens or {@code packageName} + * is null + */ + public int getPackageUidAsUser(String packageName, int userId) { + try { + return packageName == null + ? UID_NULL + : mPackageManager.getPackageUidAsUser( + packageName, PackageManager.GET_META_DATA, userId); + } catch (PackageManager.NameNotFoundException e) { + return UID_NULL; + } + } + /** * Parses proto object from string. * diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java index 2c376e5fcec..5b05e347fdd 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffEntry.java @@ -324,7 +324,8 @@ public class BatteryDiffEntry { } } - int uid = BatteryUtils.getInstance(mContext).getPackageUid(packageName); + int uid = + BatteryUtils.getInstance(mContext).getPackageUidAsUser(packageName, (int) mUserId); synchronized (sPackageNameAndUidCacheLock) { sPackageNameAndUidCache.put(packageName, uid); } @@ -379,8 +380,7 @@ public class BatteryDiffEntry { mAppIcon = nameAndIconForUser.mIcon; mAppLabel = nameAndIconForUser.mName; putResourceCache( - getKey(), - new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0)); + getKey(), new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0)); } break; case ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY: @@ -392,8 +392,7 @@ public class BatteryDiffEntry { mAppIconId = nameAndIconForSystem.mIconId; mAppIcon = mContext.getDrawable(nameAndIconForSystem.mIconId); } - putResourceCache( - getKey(), new NameAndIcon(mAppLabel, mAppIcon, mAppIconId)); + putResourceCache(getKey(), new NameAndIcon(mAppLabel, mAppIcon, mAppIconId)); } break; case ConvertUtils.CONSUMER_TYPE_UID_BATTERY: @@ -406,8 +405,7 @@ public class BatteryDiffEntry { mAppIcon = getBadgeIconForUser(mAppIcon); if (mAppLabel != null || mAppIcon != null) { putResourceCache( - getKey(), - new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0)); + getKey(), new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0)); } break; }