diff options
| author | 2024-09-04 16:01:58 +0000 | |
|---|---|---|
| committer | 2024-09-10 01:10:02 +0000 | |
| commit | d1a4e7d2c11e45ce67a1f65383bd1d0bc9cb6bd3 (patch) | |
| tree | 8855b4b798b2b46dd5be6a430e205effdeba1fca | |
| parent | f17c2a0b753eac8f7c28ed6b2c8d519fbf1958d7 (diff) | |
Fix PackageManager#getPackageArchiveInfo to cache derived fields
After switching from old parser to PackageParser2, getPackageArchiveInfo doesn't call hideAsFinal(), which results in assignDerivedFields2() not called and app info flags not initalized. As a result, appinfo.flags
is always 0. Fix it by calling hideAsFinal() to cache derived fields.
Alternative fix is to call assignDerivedFields2() in hideAsParsed(),
but I am not sure if that is what the API wants to do.
Change-Id: I33c1d8446739d6982df1fbec29e65b1c6c33556d
| -rw-r--r-- | core/java/android/content/pm/PackageManager.java | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 65ab379b182b..bca30b4fec5a 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -8842,6 +8842,7 @@ public abstract class PackageManager { try { ParsedPackage pp = parser2.parsePackage(apkFile, parserFlags, false); + pp.hideAsFinal(); return PackageInfoCommonUtils.generate(pp, flagsBits, UserHandle.myUserId()); } catch (PackageParserException e) { |