Merge "Teach PackageManager.getApplicationInfo about MATCH_APEX" into rvc-dev am: 0b7f9b9b99
Change-Id: I92bccfe2f9357f3717140a83cdb98b89016331df
This commit is contained in:
@@ -180,6 +180,7 @@ public abstract class PackageManager {
|
|||||||
GET_DISABLED_UNTIL_USED_COMPONENTS,
|
GET_DISABLED_UNTIL_USED_COMPONENTS,
|
||||||
GET_UNINSTALLED_PACKAGES,
|
GET_UNINSTALLED_PACKAGES,
|
||||||
MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
|
MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS,
|
||||||
|
MATCH_APEX,
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface ApplicationInfoFlags {}
|
public @interface ApplicationInfoFlags {}
|
||||||
|
|||||||
@@ -4949,6 +4949,21 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
}
|
}
|
||||||
return ai;
|
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)) {
|
if ("android".equals(packageName)||"system".equals(packageName)) {
|
||||||
return mAndroidApplication;
|
return mAndroidApplication;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user