Optimize ActiveServices targetSdkVersion fetch

Rather than fetching the entire AppInfo object, call the method for
specifically getting the targetSdkVersion.

In this specific case, match flags and user ID can both be ignored as
only 1 physical APK for each package name is allowed on the device, so
as long as the caller has package visibility, the targetSdkVersion
returned is guaranteed to be the right one.

Bug: 219481486

Test: presubmit

Change-Id: I1d8c155e9be9b80da0af241273ceb9cf3564d917
This commit is contained in:
Winson Chiu
2022-04-22 20:47:58 +00:00
parent b1b22000d6
commit 9aedadbedc

View File

@@ -6568,12 +6568,11 @@ public final class ActiveServices {
}
final int uidState = mAm.getUidStateLocked(callingUid);
int callerTargetSdkVersion = INVALID_UID;
int callerTargetSdkVersion = -1;
try {
ApplicationInfo ai = mAm.mContext.getPackageManager().getApplicationInfoAsUser(
callingPackage, PackageManager.MATCH_KNOWN_PACKAGES, userId);
callerTargetSdkVersion = ai.targetSdkVersion;
} catch (PackageManager.NameNotFoundException e) {
callerTargetSdkVersion = mAm.mContext.getPackageManager()
.getTargetSdkVersion(callingPackage);
} catch (PackageManager.NameNotFoundException ignored) {
}
final String debugInfo =
"[callingPackage: " + callingPackage