1 /* 2 * Copyright (C) 2020 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.pkg; 18 19 import android.annotation.IntDef; 20 import android.annotation.NonNull; 21 import android.annotation.Nullable; 22 import android.content.pm.PackageManager; 23 import android.content.pm.PackageManagerInternal; 24 import android.content.pm.SharedLibraryInfo; 25 import android.content.pm.SigningInfo; 26 import android.content.pm.overlay.OverlayPaths; 27 import android.util.ArraySet; 28 import android.util.SparseArray; 29 30 import com.android.internal.util.DataClass; 31 import com.android.server.pm.PackageManagerService; 32 import com.android.server.pm.PackageSetting; 33 import com.android.server.pm.Settings; 34 import com.android.server.pm.parsing.pkg.AndroidPackage; 35 36 import java.io.File; 37 import java.util.List; 38 import java.util.Map; 39 import java.util.Set; 40 import java.util.function.Consumer; 41 42 /** 43 * Because a {@link PackageSetting} cannot be returned from {@link Settings} without holding the 44 * {@link PackageManagerService#mLock}, this class serves as a memory snapshot of the state of a 45 * single package, for use with {@link PackageManagerInternal#getPackageState(String)} and {@link 46 * PackageManagerInternal#forEachPackageState(boolean, Consumer)}. 47 * 48 * @hide 49 */ 50 @DataClass(genConstructor = false) 51 @DataClass.Suppress({"mUserStates"}) 52 public class PackageStateImpl implements PackageState { 53 copy(@onNull PackageStateInternal pkgSetting)54 public static PackageState copy(@NonNull PackageStateInternal pkgSetting) { 55 return new PackageStateImpl(pkgSetting, pkgSetting.getPkg()); 56 } 57 58 private static class Booleans { 59 @IntDef({ 60 SYSTEM, 61 EXTERNAL_STORAGE, 62 PRIVILEGED, 63 OEM, 64 VENDOR, 65 PRODUCT, 66 SYSTEM_EXT, 67 REQUIRED_FOR_SYSTEM_USER, 68 ODM, 69 FORCE_QUERYABLE_OVERRIDE, 70 HIDDEN_UNTIL_INSTALLED, 71 INSTALL_PERMISSIONS_FIXED, 72 UPDATE_AVAILABLE, 73 UPDATED_SYSTEM_APP, 74 }) 75 public @interface Flags { 76 } 77 78 private static final int SYSTEM = 1; 79 private static final int EXTERNAL_STORAGE = 1 << 1; 80 private static final int PRIVILEGED = 1 << 2; 81 private static final int OEM = 1 << 3; 82 private static final int VENDOR = 1 << 4; 83 private static final int PRODUCT = 1 << 5; 84 private static final int SYSTEM_EXT = 1 << 6; 85 private static final int REQUIRED_FOR_SYSTEM_USER = 1 << 7; 86 private static final int ODM = 1 << 8; 87 private static final int FORCE_QUERYABLE_OVERRIDE = 1 << 9; 88 private static final int HIDDEN_UNTIL_INSTALLED = 1 << 10; 89 private static final int INSTALL_PERMISSIONS_FIXED = 1 << 11; 90 private static final int UPDATE_AVAILABLE = 1 << 12; 91 private static final int UPDATED_SYSTEM_APP = 1 << 13; 92 } 93 94 private int mBooleans; 95 setBoolean(@ooleans.Flags int flag, boolean value)96 private void setBoolean(@Booleans.Flags int flag, boolean value) { 97 if (value) { 98 mBooleans |= flag; 99 } else { 100 mBooleans &= ~flag; 101 } 102 } 103 getBoolean(@ooleans.Flags int flag)104 private boolean getBoolean(@Booleans.Flags int flag) { 105 return (mBooleans & flag) != 0; 106 } 107 108 @Nullable 109 private final AndroidPackageApi mAndroidPackage; 110 111 @NonNull 112 private final String mPackageName; 113 @Nullable 114 private final String mVolumeUuid; 115 private final int mAppId; 116 private final int mCategoryOverride; 117 @Nullable 118 private final String mCpuAbiOverride; 119 private final long mLastModifiedTime; 120 private final long mLastUpdateTime; 121 private final long mLongVersionCode; 122 @NonNull 123 private final Map<String, Set<String>> mMimeGroups; 124 @NonNull 125 private final File mPath; 126 @Nullable 127 private final String mPrimaryCpuAbi; 128 @Nullable 129 private final String mSecondaryCpuAbi; 130 private final boolean mHasSharedUser; 131 private final int mSharedUserAppId; 132 @NonNull 133 private final String[] mUsesSdkLibraries; 134 @NonNull 135 private final long[] mUsesSdkLibrariesVersionsMajor; 136 @NonNull 137 private final String[] mUsesStaticLibraries; 138 @NonNull 139 private final long[] mUsesStaticLibrariesVersions; 140 @NonNull 141 private final List<SharedLibraryInfo> mUsesLibraryInfos; 142 @NonNull 143 private final List<String> mUsesLibraryFiles; 144 @NonNull 145 private final long[] mLastPackageUsageTime; 146 @NonNull 147 private final SigningInfo mSigningInfo; 148 @NonNull 149 private final SparseArray<PackageUserState> mUserStates; 150 PackageStateImpl(@onNull PackageState pkgState, @Nullable AndroidPackage pkg)151 private PackageStateImpl(@NonNull PackageState pkgState, @Nullable AndroidPackage pkg) { 152 mAndroidPackage = pkg; 153 154 setBoolean(Booleans.SYSTEM, pkgState.isSystem()); 155 setBoolean(Booleans.EXTERNAL_STORAGE, pkgState.isExternalStorage()); 156 setBoolean(Booleans.PRIVILEGED, pkgState.isPrivileged()); 157 setBoolean(Booleans.OEM, pkgState.isOem()); 158 setBoolean(Booleans.VENDOR, pkgState.isVendor()); 159 setBoolean(Booleans.PRODUCT, pkgState.isProduct()); 160 setBoolean(Booleans.SYSTEM_EXT, pkgState.isSystemExt()); 161 setBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER, pkgState.isRequiredForSystemUser()); 162 setBoolean(Booleans.ODM, pkgState.isOdm()); 163 164 mPackageName = pkgState.getPackageName(); 165 mVolumeUuid = pkgState.getVolumeUuid(); 166 mAppId = pkgState.getAppId(); 167 mCategoryOverride = pkgState.getCategoryOverride(); 168 mCpuAbiOverride = pkgState.getCpuAbiOverride(); 169 mLastModifiedTime = pkgState.getLastModifiedTime(); 170 mLastUpdateTime = pkgState.getLastUpdateTime(); 171 mLongVersionCode = pkgState.getVersionCode(); 172 mMimeGroups = pkgState.getMimeGroups(); 173 mPath = pkgState.getPath(); 174 mPrimaryCpuAbi = pkgState.getPrimaryCpuAbi(); 175 mSecondaryCpuAbi = pkgState.getSecondaryCpuAbi(); 176 mHasSharedUser = pkgState.hasSharedUser(); 177 mSharedUserAppId = pkgState.getSharedUserAppId(); 178 mUsesSdkLibraries = pkgState.getUsesSdkLibraries(); 179 mUsesSdkLibrariesVersionsMajor = pkgState.getUsesSdkLibrariesVersionsMajor(); 180 mUsesStaticLibraries = pkgState.getUsesStaticLibraries(); 181 mUsesStaticLibrariesVersions = pkgState.getUsesStaticLibrariesVersions(); 182 mUsesLibraryInfos = pkgState.getUsesLibraryInfos(); 183 mUsesLibraryFiles = pkgState.getUsesLibraryFiles(); 184 setBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE, pkgState.isForceQueryableOverride()); 185 setBoolean(Booleans.HIDDEN_UNTIL_INSTALLED, pkgState.isHiddenUntilInstalled()); 186 setBoolean(Booleans.INSTALL_PERMISSIONS_FIXED, pkgState.isInstallPermissionsFixed()); 187 setBoolean(Booleans.UPDATE_AVAILABLE, pkgState.isUpdateAvailable()); 188 mLastPackageUsageTime = pkgState.getLastPackageUsageTime(); 189 setBoolean(Booleans.UPDATED_SYSTEM_APP, pkgState.isUpdatedSystemApp()); 190 mSigningInfo = pkgState.getSigningInfo(); 191 192 SparseArray<? extends PackageUserState> userStates = pkgState.getUserStates(); 193 int userStatesSize = userStates.size(); 194 mUserStates = new SparseArray<>(userStatesSize); 195 for (int index = 0; index < userStatesSize; index++) { 196 mUserStates.put(mUserStates.keyAt(index), 197 UserStateImpl.copy(mUserStates.valueAt(index))); 198 } 199 } 200 201 @Override isExternalStorage()202 public boolean isExternalStorage() { 203 return getBoolean(Booleans.EXTERNAL_STORAGE); 204 } 205 206 @Override isForceQueryableOverride()207 public boolean isForceQueryableOverride() { 208 return getBoolean(Booleans.FORCE_QUERYABLE_OVERRIDE); 209 } 210 211 @Override isHiddenUntilInstalled()212 public boolean isHiddenUntilInstalled() { 213 return getBoolean(Booleans.HIDDEN_UNTIL_INSTALLED); 214 } 215 216 @Override isInstallPermissionsFixed()217 public boolean isInstallPermissionsFixed() { 218 return getBoolean(Booleans.INSTALL_PERMISSIONS_FIXED); 219 } 220 221 @Override isOdm()222 public boolean isOdm() { 223 return getBoolean(Booleans.ODM); 224 } 225 226 @Override isOem()227 public boolean isOem() { 228 return getBoolean(Booleans.OEM); 229 } 230 231 @Override isPrivileged()232 public boolean isPrivileged() { 233 return getBoolean(Booleans.PRIVILEGED); 234 } 235 236 @Override isProduct()237 public boolean isProduct() { 238 return getBoolean(Booleans.PRODUCT); 239 } 240 241 @Override isRequiredForSystemUser()242 public boolean isRequiredForSystemUser() { 243 return getBoolean(Booleans.REQUIRED_FOR_SYSTEM_USER); 244 } 245 246 @Override isSystem()247 public boolean isSystem() { 248 return getBoolean(Booleans.SYSTEM); 249 } 250 251 @Override isSystemExt()252 public boolean isSystemExt() { 253 return getBoolean(Booleans.SYSTEM_EXT); 254 } 255 256 @Override isUpdateAvailable()257 public boolean isUpdateAvailable() { 258 return getBoolean(Booleans.UPDATE_AVAILABLE); 259 } 260 261 @Override isUpdatedSystemApp()262 public boolean isUpdatedSystemApp() { 263 return getBoolean(Booleans.UPDATED_SYSTEM_APP); 264 } 265 266 @Override isVendor()267 public boolean isVendor() { 268 return getBoolean(Booleans.VENDOR); 269 } 270 271 @Override getVersionCode()272 public long getVersionCode() { 273 return mLongVersionCode; 274 } 275 276 @Override hasSharedUser()277 public boolean hasSharedUser() { 278 return mHasSharedUser; 279 } 280 281 @Override getSharedUserAppId()282 public int getSharedUserAppId() { 283 return mSharedUserAppId; 284 } 285 /** 286 * @hide 287 */ 288 @DataClass(genConstructor = false) 289 public static class UserStateImpl implements PackageUserState { 290 copy(@onNull PackageUserState state)291 public static PackageUserState copy(@NonNull PackageUserState state) { 292 return new UserStateImpl(state); 293 } 294 295 private static class Booleans { 296 @IntDef({ 297 HIDDEN, 298 INSTALLED, 299 INSTANT_APP, 300 NOT_LAUNCHED, 301 STOPPED, 302 SUSPENDED, 303 VIRTUAL_PRELOAD, 304 }) 305 public @interface Flags { 306 } 307 308 private static final int HIDDEN = 1; 309 private static final int INSTALLED = 1 << 1; 310 private static final int INSTANT_APP = 1 << 2; 311 private static final int NOT_LAUNCHED = 1 << 3; 312 private static final int STOPPED = 1 << 4; 313 private static final int SUSPENDED = 1 << 5; 314 private static final int VIRTUAL_PRELOAD = 1 << 6; 315 } 316 317 private int mBooleans; 318 setBoolean(@ooleans.Flags int flag, boolean value)319 private void setBoolean(@Booleans.Flags int flag, boolean value) { 320 if (value) { 321 mBooleans |= flag; 322 } else { 323 mBooleans &= ~flag; 324 } 325 } 326 getBoolean(@ooleans.Flags int flag)327 private boolean getBoolean(@Booleans.Flags int flag) { 328 return (mBooleans & flag) != 0; 329 } 330 331 private final long mCeDataInode; 332 @NonNull 333 private final ArraySet<String> mDisabledComponents; 334 @PackageManager.DistractionRestriction 335 private final int mDistractionFlags; 336 @NonNull 337 private final ArraySet<String> mEnabledComponents; 338 private final int mEnabledState; 339 @Nullable 340 private final String mHarmfulAppWarning; 341 @PackageManager.InstallReason 342 private final int mInstallReason; 343 @Nullable 344 private final String mLastDisableAppCaller; 345 @NonNull 346 private final OverlayPaths mOverlayPaths; 347 @NonNull 348 private final Map<String, OverlayPaths> mSharedLibraryOverlayPaths; 349 @PackageManager.UninstallReason 350 private final int mUninstallReason; 351 @Nullable 352 private final String mSplashScreenTheme; 353 private final long mFirstInstallTime; 354 UserStateImpl(@onNull PackageUserState userState)355 private UserStateImpl(@NonNull PackageUserState userState) { 356 mCeDataInode = userState.getCeDataInode(); 357 mDisabledComponents = userState.getDisabledComponents(); 358 mDistractionFlags = userState.getDistractionFlags(); 359 mEnabledComponents = userState.getEnabledComponents(); 360 mEnabledState = userState.getEnabledState(); 361 mHarmfulAppWarning = userState.getHarmfulAppWarning(); 362 mInstallReason = userState.getInstallReason(); 363 mLastDisableAppCaller = userState.getLastDisableAppCaller(); 364 mOverlayPaths = userState.getOverlayPaths(); 365 mSharedLibraryOverlayPaths = userState.getSharedLibraryOverlayPaths(); 366 mUninstallReason = userState.getUninstallReason(); 367 mSplashScreenTheme = userState.getSplashScreenTheme(); 368 setBoolean(Booleans.HIDDEN, userState.isHidden()); 369 setBoolean(Booleans.INSTALLED, userState.isInstalled()); 370 setBoolean(Booleans.INSTANT_APP, userState.isInstantApp()); 371 setBoolean(Booleans.NOT_LAUNCHED, userState.isNotLaunched()); 372 setBoolean(Booleans.STOPPED, userState.isStopped()); 373 setBoolean(Booleans.SUSPENDED, userState.isSuspended()); 374 setBoolean(Booleans.VIRTUAL_PRELOAD, userState.isVirtualPreload()); 375 mFirstInstallTime = userState.getFirstInstallTime(); 376 } 377 378 @Override isHidden()379 public boolean isHidden() { 380 return getBoolean(Booleans.HIDDEN); 381 } 382 383 @Override isInstalled()384 public boolean isInstalled() { 385 return getBoolean(Booleans.INSTALLED); 386 } 387 388 @Override isInstantApp()389 public boolean isInstantApp() { 390 return getBoolean(Booleans.INSTANT_APP); 391 } 392 393 @Override isNotLaunched()394 public boolean isNotLaunched() { 395 return getBoolean(Booleans.NOT_LAUNCHED); 396 } 397 398 @Override isStopped()399 public boolean isStopped() { 400 return getBoolean(Booleans.STOPPED); 401 } 402 403 @Override isSuspended()404 public boolean isSuspended() { 405 return getBoolean(Booleans.SUSPENDED); 406 } 407 408 @Override isVirtualPreload()409 public boolean isVirtualPreload() { 410 return getBoolean(Booleans.VIRTUAL_PRELOAD); 411 } 412 413 @Override isComponentEnabled(String componentName)414 public boolean isComponentEnabled(String componentName) { 415 return mEnabledComponents.contains(componentName); 416 } 417 418 @Override isComponentDisabled(String componentName)419 public boolean isComponentDisabled(String componentName) { 420 return mDisabledComponents.contains(componentName); 421 } 422 423 @Override getAllOverlayPaths()424 public OverlayPaths getAllOverlayPaths() { 425 if (mOverlayPaths == null && mSharedLibraryOverlayPaths == null) { 426 return null; 427 } 428 final OverlayPaths.Builder newPaths = new OverlayPaths.Builder(); 429 newPaths.addAll(mOverlayPaths); 430 if (mSharedLibraryOverlayPaths != null) { 431 for (final OverlayPaths libOverlayPaths : mSharedLibraryOverlayPaths.values()) { 432 newPaths.addAll(libOverlayPaths); 433 } 434 } 435 return newPaths.build(); 436 } 437 438 439 440 // Code below generated by codegen v1.0.23. 441 // 442 // DO NOT MODIFY! 443 // CHECKSTYLE:OFF Generated code 444 // 445 // To regenerate run: 446 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java 447 // 448 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 449 // Settings > Editor > Code Style > Formatter Control 450 //@formatter:off 451 452 453 @DataClass.Generated.Member getBooleans()454 public int getBooleans() { 455 return mBooleans; 456 } 457 458 @DataClass.Generated.Member getCeDataInode()459 public long getCeDataInode() { 460 return mCeDataInode; 461 } 462 463 @DataClass.Generated.Member 464 public @NonNull getDisabledComponents()465 ArraySet<String> getDisabledComponents() { 466 return mDisabledComponents; 467 } 468 469 @DataClass.Generated.Member getDistractionFlags()470 public @PackageManager.DistractionRestriction int getDistractionFlags() { 471 return mDistractionFlags; 472 } 473 474 @DataClass.Generated.Member getEnabledComponents()475 public @NonNull ArraySet<String> getEnabledComponents() { 476 return mEnabledComponents; 477 } 478 479 @DataClass.Generated.Member getEnabledState()480 public int getEnabledState() { 481 return mEnabledState; 482 } 483 484 @DataClass.Generated.Member getHarmfulAppWarning()485 public @Nullable String getHarmfulAppWarning() { 486 return mHarmfulAppWarning; 487 } 488 489 @DataClass.Generated.Member getInstallReason()490 public @PackageManager.InstallReason int getInstallReason() { 491 return mInstallReason; 492 } 493 494 @DataClass.Generated.Member getLastDisableAppCaller()495 public @Nullable String getLastDisableAppCaller() { 496 return mLastDisableAppCaller; 497 } 498 499 @DataClass.Generated.Member getOverlayPaths()500 public @NonNull OverlayPaths getOverlayPaths() { 501 return mOverlayPaths; 502 } 503 504 @DataClass.Generated.Member getSharedLibraryOverlayPaths()505 public @NonNull Map<String,OverlayPaths> getSharedLibraryOverlayPaths() { 506 return mSharedLibraryOverlayPaths; 507 } 508 509 @DataClass.Generated.Member getUninstallReason()510 public @PackageManager.UninstallReason int getUninstallReason() { 511 return mUninstallReason; 512 } 513 514 @DataClass.Generated.Member getSplashScreenTheme()515 public @Nullable String getSplashScreenTheme() { 516 return mSplashScreenTheme; 517 } 518 519 @DataClass.Generated.Member getFirstInstallTime()520 public long getFirstInstallTime() { 521 return mFirstInstallTime; 522 } 523 524 @DataClass.Generated.Member setBooleans( int value)525 public @NonNull UserStateImpl setBooleans( int value) { 526 mBooleans = value; 527 return this; 528 } 529 530 @DataClass.Generated( 531 time = 1644270981508L, 532 codegenVersion = "1.0.23", 533 sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java", 534 inputSignatures = "private int mBooleans\nprivate final long mCeDataInode\nprivate final @android.annotation.NonNull java.util.Set<java.lang.String> mDisabledComponents\nprivate final @android.content.pm.PackageManager.DistractionRestriction int mDistractionFlags\nprivate final @android.annotation.NonNull java.util.Set<java.lang.String> mEnabledComponents\nprivate final int mEnabledState\nprivate final @android.annotation.Nullable java.lang.String mHarmfulAppWarning\nprivate final @android.content.pm.PackageManager.InstallReason int mInstallReason\nprivate final @android.annotation.Nullable java.lang.String mLastDisableAppCaller\nprivate final @android.annotation.NonNull android.content.pm.overlay.OverlayPaths mOverlayPaths\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,android.content.pm.overlay.OverlayPaths> mSharedLibraryOverlayPaths\nprivate final @android.content.pm.PackageManager.UninstallReason int mUninstallReason\nprivate final @android.annotation.Nullable java.lang.String mSplashScreenTheme\nprivate final long mFirstInstallTime\npublic static com.android.server.pm.pkg.PackageUserState copy(com.android.server.pm.pkg.PackageUserState)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @java.lang.Override boolean isHidden()\npublic @java.lang.Override boolean isInstalled()\npublic @java.lang.Override boolean isInstantApp()\npublic @java.lang.Override boolean isNotLaunched()\npublic @java.lang.Override boolean isStopped()\npublic @java.lang.Override boolean isSuspended()\npublic @java.lang.Override boolean isVirtualPreload()\npublic @java.lang.Override boolean isComponentEnabled(java.lang.String)\npublic @java.lang.Override boolean isComponentDisabled(java.lang.String)\npublic @java.lang.Override android.content.pm.overlay.OverlayPaths getAllOverlayPaths()\nclass UserStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageUserState]\nprivate static final int HIDDEN\nprivate static final int INSTALLED\nprivate static final int INSTANT_APP\nprivate static final int NOT_LAUNCHED\nprivate static final int STOPPED\nprivate static final int SUSPENDED\nprivate static final int VIRTUAL_PRELOAD\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)") 535 @Deprecated __metadata()536 private void __metadata() {} 537 538 539 //@formatter:on 540 // End of generated code 541 542 } 543 544 545 546 // Code below generated by codegen v1.0.23. 547 // 548 // DO NOT MODIFY! 549 // CHECKSTYLE:OFF Generated code 550 // 551 // To regenerate run: 552 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java 553 // 554 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 555 // Settings > Editor > Code Style > Formatter Control 556 //@formatter:off 557 558 559 @DataClass.Generated.Member getBooleans()560 public int getBooleans() { 561 return mBooleans; 562 } 563 564 @DataClass.Generated.Member getAndroidPackage()565 public @Nullable AndroidPackageApi getAndroidPackage() { 566 return mAndroidPackage; 567 } 568 569 @DataClass.Generated.Member getPackageName()570 public @NonNull String getPackageName() { 571 return mPackageName; 572 } 573 574 @DataClass.Generated.Member getVolumeUuid()575 public @Nullable String getVolumeUuid() { 576 return mVolumeUuid; 577 } 578 579 @DataClass.Generated.Member getAppId()580 public int getAppId() { 581 return mAppId; 582 } 583 584 @DataClass.Generated.Member getCategoryOverride()585 public int getCategoryOverride() { 586 return mCategoryOverride; 587 } 588 589 @DataClass.Generated.Member getCpuAbiOverride()590 public @Nullable String getCpuAbiOverride() { 591 return mCpuAbiOverride; 592 } 593 594 @DataClass.Generated.Member getLastModifiedTime()595 public long getLastModifiedTime() { 596 return mLastModifiedTime; 597 } 598 599 @DataClass.Generated.Member getLastUpdateTime()600 public long getLastUpdateTime() { 601 return mLastUpdateTime; 602 } 603 604 @DataClass.Generated.Member getLongVersionCode()605 public long getLongVersionCode() { 606 return mLongVersionCode; 607 } 608 609 @DataClass.Generated.Member getMimeGroups()610 public @NonNull Map<String,Set<String>> getMimeGroups() { 611 return mMimeGroups; 612 } 613 614 @DataClass.Generated.Member getPath()615 public @NonNull File getPath() { 616 return mPath; 617 } 618 619 @DataClass.Generated.Member getPrimaryCpuAbi()620 public @Nullable String getPrimaryCpuAbi() { 621 return mPrimaryCpuAbi; 622 } 623 624 @DataClass.Generated.Member getSecondaryCpuAbi()625 public @Nullable String getSecondaryCpuAbi() { 626 return mSecondaryCpuAbi; 627 } 628 629 @DataClass.Generated.Member isHasSharedUser()630 public boolean isHasSharedUser() { 631 return mHasSharedUser; 632 } 633 634 @DataClass.Generated.Member getUsesSdkLibraries()635 public @NonNull String[] getUsesSdkLibraries() { 636 return mUsesSdkLibraries; 637 } 638 639 @DataClass.Generated.Member getUsesSdkLibrariesVersionsMajor()640 public @NonNull long[] getUsesSdkLibrariesVersionsMajor() { 641 return mUsesSdkLibrariesVersionsMajor; 642 } 643 644 @DataClass.Generated.Member getUsesStaticLibraries()645 public @NonNull String[] getUsesStaticLibraries() { 646 return mUsesStaticLibraries; 647 } 648 649 @DataClass.Generated.Member getUsesStaticLibrariesVersions()650 public @NonNull long[] getUsesStaticLibrariesVersions() { 651 return mUsesStaticLibrariesVersions; 652 } 653 654 @DataClass.Generated.Member getUsesLibraryInfos()655 public @NonNull List<SharedLibraryInfo> getUsesLibraryInfos() { 656 return mUsesLibraryInfos; 657 } 658 659 @DataClass.Generated.Member getUsesLibraryFiles()660 public @NonNull List<String> getUsesLibraryFiles() { 661 return mUsesLibraryFiles; 662 } 663 664 @DataClass.Generated.Member getLastPackageUsageTime()665 public @NonNull long[] getLastPackageUsageTime() { 666 return mLastPackageUsageTime; 667 } 668 669 @DataClass.Generated.Member getSigningInfo()670 public @NonNull SigningInfo getSigningInfo() { 671 return mSigningInfo; 672 } 673 674 @DataClass.Generated.Member getUserStates()675 public @NonNull SparseArray<PackageUserState> getUserStates() { 676 return mUserStates; 677 } 678 679 @DataClass.Generated.Member setBooleans( int value)680 public @NonNull PackageStateImpl setBooleans( int value) { 681 mBooleans = value; 682 return this; 683 } 684 685 @DataClass.Generated( 686 time = 1644270981543L, 687 codegenVersion = "1.0.23", 688 sourceFile = "frameworks/base/services/core/java/com/android/server/pm/pkg/PackageStateImpl.java", 689 inputSignatures = "private int mBooleans\nprivate final @android.annotation.Nullable com.android.server.pm.pkg.AndroidPackageApi mAndroidPackage\nprivate final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.Nullable java.lang.String mVolumeUuid\nprivate final int mAppId\nprivate final int mCategoryOverride\nprivate final @android.annotation.Nullable java.lang.String mCpuAbiOverride\nprivate final long mLastModifiedTime\nprivate final long mLastUpdateTime\nprivate final long mLongVersionCode\nprivate final @android.annotation.NonNull java.util.Map<java.lang.String,java.util.Set<java.lang.String>> mMimeGroups\nprivate final @android.annotation.NonNull java.io.File mPath\nprivate final @android.annotation.Nullable java.lang.String mPrimaryCpuAbi\nprivate final @android.annotation.Nullable java.lang.String mSecondaryCpuAbi\nprivate final boolean mHasSharedUser\nprivate final int mSharedUserAppId\nprivate final @android.annotation.NonNull java.lang.String[] mUsesSdkLibraries\nprivate final @android.annotation.NonNull long[] mUsesSdkLibrariesVersionsMajor\nprivate final @android.annotation.NonNull java.lang.String[] mUsesStaticLibraries\nprivate final @android.annotation.NonNull long[] mUsesStaticLibrariesVersions\nprivate final @android.annotation.NonNull java.util.List<android.content.pm.SharedLibraryInfo> mUsesLibraryInfos\nprivate final @android.annotation.NonNull java.util.List<java.lang.String> mUsesLibraryFiles\nprivate final @android.annotation.NonNull long[] mLastPackageUsageTime\nprivate final @android.annotation.NonNull android.content.pm.SigningInfo mSigningInfo\nprivate final @android.annotation.NonNull android.util.SparseArray<com.android.server.pm.pkg.PackageUserState> mUserStates\npublic static com.android.server.pm.pkg.PackageState copy(com.android.server.pm.pkg.PackageStateInternal)\nprivate void setBoolean(int,boolean)\nprivate boolean getBoolean(int)\npublic @java.lang.Override boolean isExternalStorage()\npublic @java.lang.Override boolean isForceQueryableOverride()\npublic @java.lang.Override boolean isHiddenUntilInstalled()\npublic @java.lang.Override boolean isInstallPermissionsFixed()\npublic @java.lang.Override boolean isOdm()\npublic @java.lang.Override boolean isOem()\npublic @java.lang.Override boolean isPrivileged()\npublic @java.lang.Override boolean isProduct()\npublic @java.lang.Override boolean isRequiredForSystemUser()\npublic @java.lang.Override boolean isSystem()\npublic @java.lang.Override boolean isSystemExt()\npublic @java.lang.Override boolean isUpdateAvailable()\npublic @java.lang.Override boolean isUpdatedSystemApp()\npublic @java.lang.Override boolean isVendor()\npublic @java.lang.Override long getVersionCode()\npublic @java.lang.Override boolean hasSharedUser()\npublic @java.lang.Override int getSharedUserAppId()\nclass PackageStateImpl extends java.lang.Object implements [com.android.server.pm.pkg.PackageState]\nprivate static final int SYSTEM\nprivate static final int EXTERNAL_STORAGE\nprivate static final int PRIVILEGED\nprivate static final int OEM\nprivate static final int VENDOR\nprivate static final int PRODUCT\nprivate static final int SYSTEM_EXT\nprivate static final int REQUIRED_FOR_SYSTEM_USER\nprivate static final int ODM\nprivate static final int FORCE_QUERYABLE_OVERRIDE\nprivate static final int HIDDEN_UNTIL_INSTALLED\nprivate static final int INSTALL_PERMISSIONS_FIXED\nprivate static final int UPDATE_AVAILABLE\nprivate static final int UPDATED_SYSTEM_APP\nclass Booleans extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false)") 690 @Deprecated __metadata()691 private void __metadata() {} 692 693 694 //@formatter:on 695 // End of generated code 696 697 } 698