From d1a4e7d2c11e45ce67a1f65383bd1d0bc9cb6bd3 Mon Sep 17 00:00:00 2001 From: Han Wang Date: Wed, 4 Sep 2024 16:01:58 +0000 Subject: 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 --- core/java/android/content/pm/PackageManager.java | 1 + 1 file changed, 1 insertion(+) 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) { -- cgit v1.2.3-59-g8ed1b