diff options
| author | 2023-10-18 10:54:07 +0100 | |
|---|---|---|
| committer | 2023-10-26 14:27:30 +0000 | |
| commit | 71058526aae06ce2a89904ae7d3aace25de6eeaa (patch) | |
| tree | 481432375a883ba0e30997bd17ff6f45a07dcbf6 | |
| parent | 721379d1e850d793e1df261f967db053fe30ac52 (diff) | |
Account for archived apps in LauncherApps::isPackageEnabled, isActivityEnabled and shouldHideFromSuggestions.
Test: atest LauncherAppsTest
Bug: 302613877
Change-Id: I8b1819d88cfcf1d576035041eb6866753ac38b17
| -rw-r--r-- | services/core/java/com/android/server/pm/LauncherAppsService.java | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index c260be9a5124..e857e050e037 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -506,6 +506,9 @@ public class LauncherAppsService extends SystemService { if (!canAccessProfile(userId, "cannot get shouldHideFromSuggestions")) { return false; } + if (Flags.archiving() && packageName != null && isPackageArchived(packageName, user)) { + return true; + } if (mPackageManagerInternal.filterAppAccess( packageName, Binder.getCallingUid(), userId)) { return false; @@ -758,6 +761,10 @@ public class LauncherAppsService extends SystemService { } } + private boolean isPackageArchived(@NonNull String packageName, UserHandle user) { + return !getApplicationInfoForArchivedApp(packageName, user).isEmpty(); + } + @NonNull private List<LauncherActivityInfoInternal> generateLauncherActivitiesForArchivedApp( @Nullable String packageName, UserHandle user) { @@ -969,11 +976,17 @@ public class LauncherAppsService extends SystemService { final int callingUid = injectBinderCallingUid(); final long ident = Binder.clearCallingIdentity(); try { - final PackageInfo info = mPackageManagerInternal.getPackageInfo(packageName, + long callingFlag = PackageManager.MATCH_DIRECT_BOOT_AWARE - | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, - callingUid, user.getIdentifier()); - return info != null && info.applicationInfo.enabled; + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE; + if (Flags.archiving()) { + callingFlag |= PackageManager.MATCH_ARCHIVED_PACKAGES; + } + final PackageInfo info = + mPackageManagerInternal.getPackageInfo( + packageName, callingFlag, callingUid, user.getIdentifier()); + return info != null + && (info.applicationInfo.enabled || info.applicationInfo.isArchived); } finally { Binder.restoreCallingIdentity(ident); } @@ -1439,7 +1452,18 @@ public class LauncherAppsService extends SystemService { if (!canAccessProfile(user.getIdentifier(), "Cannot check component")) { return false; } - + if (Flags.archiving() && component != null && component.getPackageName() != null) { + List<LauncherActivityInfoInternal> archiveActivities = + generateLauncherActivitiesForArchivedApp(component.getPackageName(), user); + if (!archiveActivities.isEmpty()) { + for (int i = 0; i < archiveActivities.size(); i++) { + if (archiveActivities.get(i).getComponentName().equals(component)) { + return true; + } + } + return false; + } + } final int callingUid = injectBinderCallingUid(); final int state = mPackageManagerInternal.getComponentEnabledSetting(component, callingUid, user.getIdentifier()); |