1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.server.pm; 18 19 import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; 20 import static android.content.pm.PackageManager.RESTRICTION_NONE; 21 22 import android.annotation.NonNull; 23 import android.annotation.Nullable; 24 import android.annotation.UserIdInt; 25 import android.content.ComponentName; 26 import android.content.Context; 27 import android.content.Intent; 28 import android.content.pm.ActivityInfo; 29 import android.content.pm.ApplicationInfo; 30 import android.content.pm.AuxiliaryResolveInfo; 31 import android.content.pm.Checksum; 32 import android.content.pm.IOnChecksumsReadyListener; 33 import android.content.pm.PackageInfo; 34 import android.content.pm.PackageManager; 35 import android.content.pm.PackageManagerInternal; 36 import android.content.pm.ProcessInfo; 37 import android.content.pm.ProviderInfo; 38 import android.content.pm.ResolveInfo; 39 import android.content.pm.SuspendDialogInfo; 40 import android.os.Binder; 41 import android.os.Build; 42 import android.os.Bundle; 43 import android.os.Handler; 44 import android.os.Process; 45 import android.os.storage.StorageManager; 46 import android.util.ArrayMap; 47 import android.util.ArraySet; 48 import android.util.SparseArray; 49 50 import com.android.server.pm.dex.DexManager; 51 import com.android.server.pm.permission.PermissionManagerServiceInternal; 52 import com.android.server.pm.pkg.AndroidPackage; 53 import com.android.server.pm.pkg.PackageStateInternal; 54 import com.android.server.pm.pkg.PackageStateUtils; 55 import com.android.server.pm.pkg.SharedUserApi; 56 import com.android.server.pm.pkg.component.ParsedMainComponent; 57 import com.android.server.pm.pkg.mutate.PackageStateMutator; 58 59 import java.io.IOException; 60 import java.util.List; 61 import java.util.concurrent.Executor; 62 import java.util.function.Consumer; 63 64 /** 65 * Internal manager variant of {@link IPackageManagerBase}. See that class for info. 66 * {@link PackageManagerInternal} should eventually passing in a snapshot instance, deprecating 67 * this class, but that requires much larger refactor. 68 */ 69 abstract class PackageManagerInternalBase extends PackageManagerInternal { 70 71 @NonNull 72 private final PackageManagerService mService; 73 PackageManagerInternalBase(@onNull PackageManagerService service)74 public PackageManagerInternalBase(@NonNull PackageManagerService service) { 75 mService = service; 76 } 77 getContext()78 @NonNull protected abstract Context getContext(); getPermissionManager()79 @NonNull protected abstract PermissionManagerServiceInternal getPermissionManager(); getAppDataHelper()80 @NonNull protected abstract AppDataHelper getAppDataHelper(); getPackageObserverHelper()81 @NonNull protected abstract PackageObserverHelper getPackageObserverHelper(); getResolveIntentHelper()82 @NonNull protected abstract ResolveIntentHelper getResolveIntentHelper(); getSuspendPackageHelper()83 @NonNull protected abstract SuspendPackageHelper getSuspendPackageHelper(); getDistractingPackageHelper()84 @NonNull protected abstract DistractingPackageHelper getDistractingPackageHelper(); getProtectedPackages()85 @NonNull protected abstract ProtectedPackages getProtectedPackages(); getUserNeedsBadging()86 @NonNull protected abstract UserNeedsBadgingCache getUserNeedsBadging(); getInstantAppRegistry()87 @NonNull protected abstract InstantAppRegistry getInstantAppRegistry(); getApexManager()88 @NonNull protected abstract ApexManager getApexManager(); getDexManager()89 @NonNull protected abstract DexManager getDexManager(); 90 91 @Override snapshot()92 public final Computer snapshot() { 93 return mService.snapshotComputer(); 94 } 95 96 @Override 97 @Deprecated getInstalledApplications( @ackageManager.ApplicationInfoFlagsBits long flags, int userId, int callingUid)98 public final List<ApplicationInfo> getInstalledApplications( 99 @PackageManager.ApplicationInfoFlagsBits long flags, int userId, int callingUid) { 100 return snapshot().getInstalledApplications(flags, userId, callingUid); 101 } 102 103 @Override 104 @Deprecated isInstantApp(String packageName, int userId)105 public final boolean isInstantApp(String packageName, int userId) { 106 return snapshot().isInstantApp(packageName, userId); 107 } 108 109 @Override 110 @Deprecated getInstantAppPackageName(int uid)111 public final String getInstantAppPackageName(int uid) { 112 return snapshot().getInstantAppPackageName(uid); 113 } 114 115 @Override 116 @Deprecated filterAppAccess(AndroidPackage pkg, int callingUid, int userId)117 public final boolean filterAppAccess(AndroidPackage pkg, int callingUid, int userId) { 118 return snapshot().filterAppAccess(pkg, callingUid, userId); 119 } 120 121 @Override 122 @Deprecated filterAppAccess(String packageName, int callingUid, int userId, boolean filterUninstalled)123 public final boolean filterAppAccess(String packageName, int callingUid, int userId, 124 boolean filterUninstalled) { 125 return snapshot().filterAppAccess(packageName, callingUid, userId, filterUninstalled); 126 } 127 128 @Override 129 @Deprecated filterAppAccess(int uid, int callingUid)130 public final boolean filterAppAccess(int uid, int callingUid) { 131 return snapshot().filterAppAccess(uid, callingUid); 132 } 133 134 @Nullable 135 @Override 136 @Deprecated getVisibilityAllowList(@onNull String packageName, int userId)137 public final int[] getVisibilityAllowList(@NonNull String packageName, int userId) { 138 return snapshot().getVisibilityAllowList(packageName, userId); 139 } 140 141 @Override 142 @Deprecated canQueryPackage(int callingUid, @Nullable String packageName)143 public final boolean canQueryPackage(int callingUid, @Nullable String packageName) { 144 return snapshot().canQueryPackage(callingUid, packageName); 145 } 146 147 @Override 148 @Deprecated getPackage(String packageName)149 public final AndroidPackage getPackage(String packageName) { 150 return snapshot().getPackage(packageName); 151 } 152 153 @Nullable 154 @Override 155 @Deprecated getAndroidPackage(@onNull String packageName)156 public final AndroidPackage getAndroidPackage(@NonNull String packageName) { 157 return snapshot().getPackage(packageName); 158 } 159 160 @Override 161 @Deprecated getPackage(int uid)162 public final AndroidPackage getPackage(int uid) { 163 return snapshot().getPackage(uid); 164 } 165 166 @Override 167 @Deprecated getPackagesForAppId(int appId)168 public final List<AndroidPackage> getPackagesForAppId(int appId) { 169 return snapshot().getPackagesForAppId(appId); 170 } 171 172 @Nullable 173 @Override 174 @Deprecated getPackageStateInternal(String packageName)175 public final PackageStateInternal getPackageStateInternal(String packageName) { 176 return snapshot().getPackageStateInternal(packageName); 177 } 178 179 @NonNull 180 @Override 181 @Deprecated getPackageStates()182 public final ArrayMap<String, ? extends PackageStateInternal> getPackageStates() { 183 return snapshot().getPackageStates(); 184 } 185 186 @Override 187 @Deprecated removePackageListObserver(PackageListObserver observer)188 public final void removePackageListObserver(PackageListObserver observer) { 189 getPackageObserverHelper().removeObserver(observer); 190 } 191 192 @Override 193 @Deprecated getDisabledSystemPackage(@onNull String packageName)194 public final PackageStateInternal getDisabledSystemPackage(@NonNull String packageName) { 195 return snapshot().getDisabledSystemPackage(packageName); 196 } 197 198 @Override 199 @Deprecated getKnownPackageNames(int knownPackage, int userId)200 public final @NonNull String[] getKnownPackageNames(int knownPackage, int userId) { 201 return mService.getKnownPackageNamesInternal(snapshot(), knownPackage, userId); 202 } 203 204 @Override 205 @Deprecated setKeepUninstalledPackages(final List<String> packageList)206 public final void setKeepUninstalledPackages(final List<String> packageList) { 207 mService.setKeepUninstalledPackagesInternal(snapshot(), packageList); 208 } 209 210 @Override 211 @Deprecated isPermissionsReviewRequired(String packageName, int userId)212 public final boolean isPermissionsReviewRequired(String packageName, int userId) { 213 return getPermissionManager().isPermissionsReviewRequired(packageName, userId); 214 } 215 216 @Override 217 @Deprecated getPackageInfo(String packageName, @PackageManager.PackageInfoFlagsBits long flags, int filterCallingUid, int userId)218 public final PackageInfo getPackageInfo(String packageName, 219 @PackageManager.PackageInfoFlagsBits long flags, int filterCallingUid, int userId) { 220 return snapshot().getPackageInfoInternal(packageName, 221 PackageManager.VERSION_CODE_HIGHEST, flags, filterCallingUid, userId); 222 } 223 224 @Override 225 @Deprecated getSuspendedPackageLauncherExtras(String packageName, int userId)226 public final Bundle getSuspendedPackageLauncherExtras(String packageName, int userId) { 227 return getSuspendPackageHelper().getSuspendedPackageLauncherExtras(snapshot(), packageName, 228 userId, Binder.getCallingUid()); 229 } 230 231 @Override 232 @Deprecated isPackageSuspended(String packageName, int userId)233 public final boolean isPackageSuspended(String packageName, int userId) { 234 return getSuspendPackageHelper().isPackageSuspended(snapshot(), packageName, userId, 235 Binder.getCallingUid()); 236 } 237 238 @Override 239 @Deprecated removeNonSystemPackageSuspensions(String packageName, int userId)240 public final void removeNonSystemPackageSuspensions(String packageName, int userId) { 241 getSuspendPackageHelper().removeSuspensionsBySuspendingPackage(snapshot(), 242 new String[]{packageName}, 243 (suspendingPackage) -> !PackageManagerService.PLATFORM_PACKAGE_NAME.equals( 244 suspendingPackage), 245 userId); 246 } 247 248 @Override 249 @Deprecated removeDistractingPackageRestrictions(String packageName, int userId)250 public final void removeDistractingPackageRestrictions(String packageName, int userId) { 251 getDistractingPackageHelper().removeDistractingPackageRestrictions(snapshot(), 252 new String[]{packageName}, userId); 253 } 254 255 @Override 256 @Deprecated removeAllDistractingPackageRestrictions(int userId)257 public final void removeAllDistractingPackageRestrictions(int userId) { 258 mService.removeAllDistractingPackageRestrictions(snapshot(), userId); 259 } 260 261 @Override 262 @Deprecated getSuspendingPackage(String suspendedPackage, int userId)263 public final String getSuspendingPackage(String suspendedPackage, int userId) { 264 return getSuspendPackageHelper().getSuspendingPackage(snapshot(), suspendedPackage, userId, 265 Binder.getCallingUid()); 266 } 267 268 @Override 269 @Deprecated getSuspendedDialogInfo(String suspendedPackage, String suspendingPackage, int userId)270 public final SuspendDialogInfo getSuspendedDialogInfo(String suspendedPackage, 271 String suspendingPackage, int userId) { 272 return getSuspendPackageHelper().getSuspendedDialogInfo(snapshot(), suspendedPackage, 273 suspendingPackage, userId, Binder.getCallingUid()); 274 } 275 276 @Override 277 @Deprecated getDistractingPackageRestrictions(String packageName, int userId)278 public final int getDistractingPackageRestrictions(String packageName, int userId) { 279 final PackageStateInternal packageState = getPackageStateInternal(packageName); 280 return (packageState == null) ? RESTRICTION_NONE 281 : packageState.getUserStateOrDefault(userId).getDistractionFlags(); 282 } 283 284 @Override 285 @Deprecated getPackageUid(String packageName, @PackageManager.PackageInfoFlagsBits long flags, int userId)286 public final int getPackageUid(String packageName, 287 @PackageManager.PackageInfoFlagsBits long flags, int userId) { 288 return snapshot().getPackageUidInternal(packageName, flags, userId, Process.SYSTEM_UID); 289 } 290 291 @Override 292 @Deprecated getApplicationInfo(String packageName, @PackageManager.ApplicationInfoFlagsBits long flags, int filterCallingUid, int userId)293 public final ApplicationInfo getApplicationInfo(String packageName, 294 @PackageManager.ApplicationInfoFlagsBits long flags, int filterCallingUid, int userId) { 295 return snapshot().getApplicationInfoInternal(packageName, flags, filterCallingUid, userId); 296 } 297 298 @Override 299 @Deprecated getActivityInfo(ComponentName component, @PackageManager.ComponentInfoFlagsBits long flags, int filterCallingUid, int userId)300 public final ActivityInfo getActivityInfo(ComponentName component, 301 @PackageManager.ComponentInfoFlagsBits long flags, int filterCallingUid, int userId) { 302 return snapshot().getActivityInfoInternal(component, flags, filterCallingUid, userId); 303 } 304 305 @Override 306 @Deprecated queryIntentActivities( Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int filterCallingUid, int userId)307 public final List<ResolveInfo> queryIntentActivities( 308 Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, 309 int filterCallingUid, int userId) { 310 return snapshot().queryIntentActivitiesInternal(intent, resolvedType, flags, 311 filterCallingUid, userId); 312 } 313 314 @Override 315 @Deprecated queryIntentReceivers(Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int filterCallingUid, int userId, boolean forSend)316 public final List<ResolveInfo> queryIntentReceivers(Intent intent, 317 String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, 318 int filterCallingUid, int userId, boolean forSend) { 319 return getResolveIntentHelper().queryIntentReceiversInternal(snapshot(), intent, 320 resolvedType, flags, userId, filterCallingUid, forSend); 321 } 322 323 @Override 324 @Deprecated queryIntentServices( Intent intent, @PackageManager.ResolveInfoFlagsBits long flags, int callingUid, int userId)325 public final List<ResolveInfo> queryIntentServices( 326 Intent intent, @PackageManager.ResolveInfoFlagsBits long flags, int callingUid, 327 int userId) { 328 final String resolvedType = intent.resolveTypeIfNeeded(getContext().getContentResolver()); 329 return snapshot().queryIntentServicesInternal(intent, resolvedType, flags, userId, 330 callingUid, false); 331 } 332 333 @Override 334 @Deprecated getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, int userId)335 public final ComponentName getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, 336 int userId) { 337 return snapshot().getHomeActivitiesAsUser(allHomeCandidates, userId); 338 } 339 340 @Override 341 @Deprecated getDefaultHomeActivity(int userId)342 public final ComponentName getDefaultHomeActivity(int userId) { 343 return snapshot().getDefaultHomeActivity(userId); 344 } 345 346 @Override 347 @Deprecated getSystemUiServiceComponent()348 public final ComponentName getSystemUiServiceComponent() { 349 return ComponentName.unflattenFromString(getContext().getResources().getString( 350 com.android.internal.R.string.config_systemUIServiceComponent)); 351 } 352 353 @Override 354 @Deprecated setOwnerProtectedPackages( @serIdInt int userId, @Nullable List<String> packageNames)355 public final void setOwnerProtectedPackages( 356 @UserIdInt int userId, @Nullable List<String> packageNames) { 357 getProtectedPackages().setOwnerProtectedPackages(userId, packageNames); 358 } 359 360 @Override 361 @Deprecated isPackageDataProtected(int userId, String packageName)362 public final boolean isPackageDataProtected(int userId, String packageName) { 363 return getProtectedPackages().isPackageDataProtected(userId, packageName); 364 } 365 366 @Override 367 @Deprecated isPackageStateProtected(String packageName, int userId)368 public final boolean isPackageStateProtected(String packageName, int userId) { 369 return getProtectedPackages().isPackageStateProtected(userId, packageName); 370 } 371 372 @Override 373 @Deprecated isPackageEphemeral(int userId, String packageName)374 public final boolean isPackageEphemeral(int userId, String packageName) { 375 final PackageStateInternal packageState = getPackageStateInternal(packageName); 376 return packageState != null 377 && packageState.getUserStateOrDefault(userId).isInstantApp(); 378 } 379 380 @Override 381 @Deprecated wasPackageEverLaunched(String packageName, int userId)382 public final boolean wasPackageEverLaunched(String packageName, int userId) { 383 final PackageStateInternal packageState = getPackageStateInternal(packageName); 384 if (packageState == null) { 385 throw new IllegalArgumentException("Unknown package: " + packageName); 386 } 387 return !packageState.getUserStateOrDefault(userId).isNotLaunched(); 388 } 389 390 @Override 391 @Deprecated isEnabledAndMatches(ParsedMainComponent component, long flags, int userId)392 public final boolean isEnabledAndMatches(ParsedMainComponent component, long flags, int userId) { 393 return PackageStateUtils.isEnabledAndMatches( 394 getPackageStateInternal(component.getPackageName()), component, flags, userId); 395 } 396 397 @Override 398 @Deprecated userNeedsBadging(int userId)399 public final boolean userNeedsBadging(int userId) { 400 return getUserNeedsBadging().get(userId); 401 } 402 403 @Override 404 @Deprecated getNameForUid(int uid)405 public final String getNameForUid(int uid) { 406 return snapshot().getNameForUid(uid); 407 } 408 409 @Override 410 @Deprecated requestInstantAppResolutionPhaseTwo(AuxiliaryResolveInfo responseObj, Intent origIntent, String resolvedType, String callingPackage, @Nullable String callingFeatureId, boolean isRequesterInstantApp, Bundle verificationBundle, int userId)411 public final void requestInstantAppResolutionPhaseTwo(AuxiliaryResolveInfo responseObj, 412 Intent origIntent, String resolvedType, String callingPackage, 413 @Nullable String callingFeatureId, boolean isRequesterInstantApp, 414 Bundle verificationBundle, int userId) { 415 mService.requestInstantAppResolutionPhaseTwo(responseObj, origIntent, 416 resolvedType, callingPackage, callingFeatureId, isRequesterInstantApp, 417 verificationBundle, userId); 418 } 419 420 @Override 421 @Deprecated grantImplicitAccess(int userId, Intent intent, int recipientAppId, int visibleUid, boolean direct)422 public final void grantImplicitAccess(int userId, Intent intent, 423 int recipientAppId, int visibleUid, boolean direct) { 424 grantImplicitAccess(userId, intent, recipientAppId, visibleUid, direct, 425 false /* retainOnUpdate */); 426 } 427 428 @Override 429 @Deprecated grantImplicitAccess(int userId, Intent intent, int recipientAppId, int visibleUid, boolean direct, boolean retainOnUpdate)430 public final void grantImplicitAccess(int userId, Intent intent, 431 int recipientAppId, int visibleUid, boolean direct, boolean retainOnUpdate) { 432 mService.grantImplicitAccess(snapshot(), userId, intent, 433 recipientAppId, visibleUid, direct, retainOnUpdate); 434 } 435 436 @Override 437 @Deprecated isInstantAppInstallerComponent(ComponentName component)438 public final boolean isInstantAppInstallerComponent(ComponentName component) { 439 final ActivityInfo instantAppInstallerActivity = mService.mInstantAppInstallerActivity; 440 return instantAppInstallerActivity != null 441 && instantAppInstallerActivity.getComponentName().equals(component); 442 } 443 444 @Override 445 @Deprecated pruneInstantApps()446 public final void pruneInstantApps() { 447 getInstantAppRegistry().pruneInstantApps(snapshot()); 448 } 449 450 @Override 451 @Deprecated getSetupWizardPackageName()452 public final String getSetupWizardPackageName() { 453 return mService.mSetupWizardPackage; 454 } 455 456 @Override 457 @Deprecated resolveIntent(Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId, boolean resolveForStart, int filterCallingUid)458 public final ResolveInfo resolveIntent(Intent intent, String resolvedType, 459 @PackageManager.ResolveInfoFlagsBits long flags, 460 @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId, 461 boolean resolveForStart, int filterCallingUid) { 462 return getResolveIntentHelper().resolveIntentInternal(snapshot(), 463 intent, resolvedType, flags, privateResolveFlags, userId, resolveForStart, 464 filterCallingUid); 465 } 466 467 /** 468 * @deprecated similar to {@link resolveIntent} but limits the matches to exported components. 469 */ 470 @Override 471 @Deprecated resolveIntentExported(Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId, boolean resolveForStart, int filterCallingUid, int callingPid)472 public final ResolveInfo resolveIntentExported(Intent intent, String resolvedType, 473 @PackageManager.ResolveInfoFlagsBits long flags, 474 @PackageManagerInternal.PrivateResolveFlags long privateResolveFlags, int userId, 475 boolean resolveForStart, int filterCallingUid, int callingPid) { 476 return getResolveIntentHelper().resolveIntentInternal(snapshot(), 477 intent, resolvedType, flags, privateResolveFlags, userId, resolveForStart, 478 filterCallingUid, true, callingPid); 479 } 480 481 @Override 482 @Deprecated resolveService(Intent intent, String resolvedType, @PackageManager.ResolveInfoFlagsBits long flags, int userId, int callingUid)483 public final ResolveInfo resolveService(Intent intent, String resolvedType, 484 @PackageManager.ResolveInfoFlagsBits long flags, int userId, int callingUid) { 485 return getResolveIntentHelper().resolveServiceInternal(snapshot(), intent, 486 resolvedType, flags, userId, callingUid); 487 } 488 489 @Override 490 @Deprecated resolveContentProvider(String name, @PackageManager.ResolveInfoFlagsBits long flags, int userId, int callingUid)491 public final ProviderInfo resolveContentProvider(String name, 492 @PackageManager.ResolveInfoFlagsBits long flags, int userId, int callingUid) { 493 return snapshot().resolveContentProvider(name, flags, userId,callingUid); 494 } 495 496 @Override 497 @Deprecated getUidTargetSdkVersion(int uid)498 public final int getUidTargetSdkVersion(int uid) { 499 return snapshot().getUidTargetSdkVersion(uid); 500 } 501 502 @Override 503 @Deprecated getPackageTargetSdkVersion(String packageName)504 public final int getPackageTargetSdkVersion(String packageName) { 505 final PackageStateInternal packageState = getPackageStateInternal(packageName); 506 if (packageState != null && packageState.getPkg() != null) { 507 return packageState.getPkg().getTargetSdkVersion(); 508 } 509 return Build.VERSION_CODES.CUR_DEVELOPMENT; 510 } 511 512 @Override 513 @Deprecated canAccessInstantApps(int callingUid, @UserIdInt int userId)514 public final boolean canAccessInstantApps(int callingUid, @UserIdInt int userId) { 515 return snapshot().canViewInstantApps(callingUid, userId); 516 } 517 518 @Override 519 @Deprecated canAccessComponent(int callingUid, @NonNull ComponentName component, @UserIdInt int userId)520 public final boolean canAccessComponent(int callingUid, @NonNull ComponentName component, 521 @UserIdInt int userId) { 522 return snapshot().canAccessComponent(callingUid, component, userId); 523 } 524 525 @Override 526 @Deprecated hasInstantApplicationMetadata(String packageName, int userId)527 public final boolean hasInstantApplicationMetadata(String packageName, int userId) { 528 return getInstantAppRegistry().hasInstantApplicationMetadata(packageName, userId); 529 } 530 531 @Override 532 @Deprecated getAppsWithSharedUserIds()533 public final SparseArray<String> getAppsWithSharedUserIds() { 534 return snapshot().getAppsWithSharedUserIds(); 535 } 536 537 @Override 538 @NonNull 539 @Deprecated getSharedUserPackagesForPackage(String packageName, int userId)540 public final String[] getSharedUserPackagesForPackage(String packageName, int userId) { 541 return snapshot().getSharedUserPackagesForPackage(packageName, userId); 542 } 543 544 @Override 545 @Deprecated getProcessesForUid(int uid)546 public final ArrayMap<String, ProcessInfo> getProcessesForUid(int uid) { 547 return snapshot().getProcessesForUid(uid); 548 } 549 550 @Override 551 @Deprecated getPermissionGids(String permissionName, int userId)552 public final int[] getPermissionGids(String permissionName, int userId) { 553 return getPermissionManager().getPermissionGids(permissionName, userId); 554 } 555 556 @Override 557 @Deprecated freeStorage(String volumeUuid, long bytes, @StorageManager.AllocateFlags int flags)558 public final void freeStorage(String volumeUuid, long bytes, 559 @StorageManager.AllocateFlags int flags) throws IOException { 560 mService.freeStorage(volumeUuid, bytes, flags); 561 } 562 563 @Override 564 @Deprecated freeAllAppCacheAboveQuota(@onNull String volumeUuid)565 public final void freeAllAppCacheAboveQuota(@NonNull String volumeUuid) throws IOException { 566 mService.freeAllAppCacheAboveQuota(volumeUuid); 567 } 568 569 @Override 570 @Deprecated forEachPackageSetting(Consumer<PackageSetting> actionLocked)571 public final void forEachPackageSetting(Consumer<PackageSetting> actionLocked) { 572 mService.forEachPackageSetting(actionLocked); 573 } 574 575 @Override 576 @Deprecated forEachPackageState(Consumer<PackageStateInternal> action)577 public final void forEachPackageState(Consumer<PackageStateInternal> action) { 578 mService.forEachPackageState(snapshot(), action); 579 } 580 581 @Override 582 @Deprecated forEachPackage(Consumer<AndroidPackage> action)583 public final void forEachPackage(Consumer<AndroidPackage> action) { 584 mService.forEachPackage(snapshot(), action); 585 } 586 587 @Override 588 @Deprecated forEachInstalledPackage(@onNull Consumer<AndroidPackage> action, @UserIdInt int userId)589 public final void forEachInstalledPackage(@NonNull Consumer<AndroidPackage> action, 590 @UserIdInt int userId) { 591 mService.forEachInstalledPackage(snapshot(), action, userId); 592 } 593 594 @Override 595 @Deprecated getEnabledComponents(String packageName, int userId)596 public final ArraySet<String> getEnabledComponents(String packageName, int userId) { 597 final PackageStateInternal packageState = getPackageStateInternal(packageName); 598 if (packageState == null) { 599 return new ArraySet<>(); 600 } 601 return packageState.getUserStateOrDefault(userId).getEnabledComponents(); 602 } 603 604 @Override 605 @Deprecated getDisabledComponents(String packageName, int userId)606 public final ArraySet<String> getDisabledComponents(String packageName, int userId) { 607 final PackageStateInternal packageState = getPackageStateInternal(packageName); 608 if (packageState == null) { 609 return new ArraySet<>(); 610 } 611 return packageState.getUserStateOrDefault(userId).getDisabledComponents(); 612 } 613 614 @Override 615 @Deprecated getApplicationEnabledState( String packageName, int userId)616 public final @PackageManager.EnabledState int getApplicationEnabledState( 617 String packageName, int userId) { 618 final PackageStateInternal packageState = getPackageStateInternal(packageName); 619 if (packageState == null) { 620 return COMPONENT_ENABLED_STATE_DEFAULT; 621 } 622 return packageState.getUserStateOrDefault(userId).getEnabledState(); 623 } 624 625 @Override 626 @Deprecated getComponentEnabledSetting( @onNull ComponentName componentName, int callingUid, int userId)627 public final @PackageManager.EnabledState int getComponentEnabledSetting( 628 @NonNull ComponentName componentName, int callingUid, int userId) { 629 return snapshot().getComponentEnabledSettingInternal( 630 componentName, callingUid, userId); 631 } 632 633 @Override 634 @Deprecated setEnableRollbackCode(int token, int enableRollbackCode)635 public final void setEnableRollbackCode(int token, int enableRollbackCode) { 636 mService.setEnableRollbackCode(token, enableRollbackCode); 637 } 638 639 @Override 640 @Deprecated finishPackageInstall(int token, boolean didLaunch)641 public final void finishPackageInstall(int token, boolean didLaunch) { 642 mService.finishPackageInstall(token, didLaunch); 643 } 644 645 @Override 646 @Deprecated isApexPackage(String packageName)647 public final boolean isApexPackage(String packageName) { 648 return snapshot().isApexPackage(packageName); 649 } 650 651 @Override 652 @Deprecated getApksInApex(String apexPackageName)653 public final List<String> getApksInApex(String apexPackageName) { 654 return getApexManager().getApksInApex(apexPackageName); 655 } 656 657 @Override 658 @Deprecated isCallerInstallerOfRecord(@onNull AndroidPackage pkg, int callingUid)659 public final boolean isCallerInstallerOfRecord(@NonNull AndroidPackage pkg, int callingUid) { 660 return snapshot().isCallerInstallerOfRecord(pkg, callingUid); 661 } 662 663 @Override 664 @Deprecated getMimeGroup(String packageName, String mimeGroup)665 public final List<String> getMimeGroup(String packageName, String mimeGroup) { 666 return mService.getMimeGroupInternal(snapshot(), packageName, mimeGroup); 667 } 668 669 @Override 670 @Deprecated isSystemPackage(@onNull String packageName)671 public final boolean isSystemPackage(@NonNull String packageName) { 672 return packageName.equals(mService.ensureSystemPackageName(snapshot(), packageName)); 673 } 674 675 @Override 676 @Deprecated unsuspendForSuspendingPackage(final String packageName, int affectedUser)677 public final void unsuspendForSuspendingPackage(final String packageName, int affectedUser) { 678 mService.unsuspendForSuspendingPackage(snapshot(), packageName, affectedUser); 679 } 680 681 @Override 682 @Deprecated isSuspendingAnyPackages(String suspendingPackage, int userId)683 public final boolean isSuspendingAnyPackages(String suspendingPackage, int userId) { 684 return snapshot().isSuspendingAnyPackages(suspendingPackage, userId); 685 } 686 687 @Override 688 @Deprecated requestChecksums(@onNull String packageName, boolean includeSplits, @Checksum.TypeMask int optional, @Checksum.TypeMask int required, @Nullable List trustedInstallers, @NonNull IOnChecksumsReadyListener onChecksumsReadyListener, int userId, @NonNull Executor executor, @NonNull Handler handler)689 public final void requestChecksums(@NonNull String packageName, boolean includeSplits, 690 @Checksum.TypeMask int optional, @Checksum.TypeMask int required, 691 @Nullable List trustedInstallers, 692 @NonNull IOnChecksumsReadyListener onChecksumsReadyListener, int userId, 693 @NonNull Executor executor, @NonNull Handler handler) { 694 mService.requestChecksumsInternal(snapshot(), packageName, includeSplits, optional, 695 required, trustedInstallers, onChecksumsReadyListener, userId, executor, 696 handler); 697 } 698 699 @Override 700 @Deprecated isPackageFrozen(@onNull String packageName, int callingUid, int userId)701 public final boolean isPackageFrozen(@NonNull String packageName, 702 int callingUid, int userId) { 703 return snapshot().getPackageStartability(mService.getSafeMode(), packageName, callingUid, userId) 704 == PackageManagerService.PACKAGE_STARTABILITY_FROZEN; 705 } 706 707 @Override 708 @Deprecated deleteOatArtifactsOfPackage(String packageName)709 public final long deleteOatArtifactsOfPackage(String packageName) { 710 return mService.deleteOatArtifactsOfPackage(snapshot(), packageName); 711 } 712 713 @Override 714 @Deprecated reconcileAppsData(int userId, @StorageManager.StorageFlags int flags, boolean migrateAppsData)715 public final void reconcileAppsData(int userId, @StorageManager.StorageFlags int flags, 716 boolean migrateAppsData) { 717 getAppDataHelper().reconcileAppsData(userId, flags, migrateAppsData); 718 } 719 720 @Override 721 @NonNull getSharedUserPackages(int sharedUserAppId)722 public ArraySet<PackageStateInternal> getSharedUserPackages(int sharedUserAppId) { 723 return snapshot().getSharedUserPackages(sharedUserAppId); 724 } 725 726 @Override 727 @Nullable getSharedUserApi(int sharedUserAppId)728 public SharedUserApi getSharedUserApi(int sharedUserAppId) { 729 return snapshot().getSharedUser(sharedUserAppId); 730 } 731 732 @Override isUidPrivileged(int uid)733 public boolean isUidPrivileged(int uid) { 734 return snapshot().isUidPrivileged(uid); 735 } 736 737 @Override checkUidSignaturesForAllUsers(int uid1, int uid2)738 public int checkUidSignaturesForAllUsers(int uid1, int uid2) { 739 return snapshot().checkUidSignaturesForAllUsers(uid1, uid2); 740 } 741 742 @Override setPackageStoppedState(@onNull String packageName, boolean stopped, int userId)743 public void setPackageStoppedState(@NonNull String packageName, boolean stopped, 744 int userId) { 745 mService.setPackageStoppedState(snapshot(), packageName, stopped, userId); 746 } 747 748 @NonNull 749 @Override 750 @Deprecated recordInitialState()751 public final PackageStateMutator.InitialState recordInitialState() { 752 return mService.recordInitialState(); 753 } 754 755 @Nullable 756 @Override 757 @Deprecated commitPackageStateMutation( @ullable PackageStateMutator.InitialState state, @NonNull Consumer<PackageStateMutator> consumer)758 public final PackageStateMutator.Result commitPackageStateMutation( 759 @Nullable PackageStateMutator.InitialState state, 760 @NonNull Consumer<PackageStateMutator> consumer) { 761 return mService.commitPackageStateMutation(state, consumer); 762 } 763 764 @Override 765 @Deprecated shutdown()766 public final void shutdown() { 767 mService.shutdown(); 768 } 769 } 770