Merge "Teach PackageManager.getApplicationInfo about MATCH_APEX" into rvc-dev am: 0b7f9b9b99 am: e3462ee2bb

Change-Id: I76b18888c1c5f1f19f5289ebea37c591df1a419b
This commit is contained in:
Nikita Ioffe
2020-04-30 11:17:42 +00:00
committed by Automerger Merge Worker
2 changed files with 16 additions and 0 deletions

View File

@@ -180,6 +180,7 @@ public abstract class PackageManager {
GET_DISABLED_UNTIL_USED_COMPONENTS,
GET_UNINSTALLED_PACKAGES,
MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
MATCH_APEX,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ApplicationInfoFlags {}

View File

@@ -4949,6 +4949,21 @@ public class PackageManagerService extends IPackageManager.Stub
}
return ai;
}
if ((flags & PackageManager.MATCH_APEX) != 0) {
// For APKs, PackageInfo.applicationInfo is not exactly the same as ApplicationInfo
// returned from getApplicationInfo, but for APEX packages difference shouldn't be
// very big.
// TODO(b/155328545): generate proper application info for APEXes as well.
int apexFlags = ApexManager.MATCH_ACTIVE_PACKAGE;
if ((flags & PackageManager.MATCH_SYSTEM_ONLY) != 0) {
apexFlags = ApexManager.MATCH_FACTORY_PACKAGE;
}
final PackageInfo pi = mApexManager.getPackageInfo(packageName, apexFlags);
if (pi == null) {
return null;
}
return pi.applicationInfo;
}
if ("android".equals(packageName)||"system".equals(packageName)) {
return mAndroidApplication;
}