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
This commit is contained in:
Jun Lan
2023-12-18 17:00:39 +08:00
parent 1ab510bc3c
commit cd516c8d46
2 changed files with 24 additions and 8 deletions

View File

@@ -144,7 +144,6 @@ public class BatteryUtils {
sInstance = null; sInstance = null;
} }
/** Gets the process time */ /** Gets the process time */
public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, int which) { public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, int which) {
if (uid == null) { 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. * Parses proto object from string.
* *

View File

@@ -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) { synchronized (sPackageNameAndUidCacheLock) {
sPackageNameAndUidCache.put(packageName, uid); sPackageNameAndUidCache.put(packageName, uid);
} }
@@ -379,8 +380,7 @@ public class BatteryDiffEntry {
mAppIcon = nameAndIconForUser.mIcon; mAppIcon = nameAndIconForUser.mIcon;
mAppLabel = nameAndIconForUser.mName; mAppLabel = nameAndIconForUser.mName;
putResourceCache( putResourceCache(
getKey(), getKey(), new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0));
new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0));
} }
break; break;
case ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY: case ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY:
@@ -392,8 +392,7 @@ public class BatteryDiffEntry {
mAppIconId = nameAndIconForSystem.mIconId; mAppIconId = nameAndIconForSystem.mIconId;
mAppIcon = mContext.getDrawable(nameAndIconForSystem.mIconId); mAppIcon = mContext.getDrawable(nameAndIconForSystem.mIconId);
} }
putResourceCache( putResourceCache(getKey(), new NameAndIcon(mAppLabel, mAppIcon, mAppIconId));
getKey(), new NameAndIcon(mAppLabel, mAppIcon, mAppIconId));
} }
break; break;
case ConvertUtils.CONSUMER_TYPE_UID_BATTERY: case ConvertUtils.CONSUMER_TYPE_UID_BATTERY:
@@ -406,8 +405,7 @@ public class BatteryDiffEntry {
mAppIcon = getBadgeIconForUser(mAppIcon); mAppIcon = getBadgeIconForUser(mAppIcon);
if (mAppLabel != null || mAppIcon != null) { if (mAppLabel != null || mAppIcon != null) {
putResourceCache( putResourceCache(
getKey(), getKey(), new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0));
new NameAndIcon(mAppLabel, mAppIcon, /* iconId= */ 0));
} }
break; break;
} }