• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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