PackageInfo.java revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm; 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Overall information about the contents of a package. This corresponds 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to all of the information collected from AndroidManifest.xml. 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class PackageInfo implements Parcelable { 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The name of this package. From the <manifest> tag's "name" 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String packageName; 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The version number of this package, as specified by the <manifest> 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_versionCode versionCode} 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int versionCode; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The version name of this package, as specified by the <manifest> 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_versionName versionName} 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String versionName; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The shared user ID name of this package, as specified by the <manifest> 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_sharedUserId sharedUserId} 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String sharedUserId; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The shared user ID label of this package, as specified by the <manifest> 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_sharedUserLabel sharedUserLabel} 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int sharedUserLabel; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information collected from the <application> tag, or null if 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there was none. 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ApplicationInfo applicationInfo; 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * All kernel group-IDs that have been assigned to this package. 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is only filled in if the flag {@link PackageManager#GET_GIDS} was set. 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int[] gids; 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestActivity 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <activity>} tags included under <application>, 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_ACTIVITIES} was set. 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ActivityInfo[] activities; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestReceiver 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <receiver>} tags included under <application>, 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_RECEIVERS} was set. 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ActivityInfo[] receivers; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestService 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <service>} tags included under <application>, 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_SERVICES} was set. 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceInfo[] services; 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestProvider 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <provider>} tags included under <application>, 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PROVIDERS} was set. 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ProviderInfo[] providers; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestInstrumentation 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <instrumentation>} tags included under <manifest>, 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_INSTRUMENTATION} was set. 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public InstrumentationInfo[] instrumentation; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestPermission 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <permission>} tags included under <manifest>, 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PERMISSIONS} was set. 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PermissionInfo[] permissions; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestUsesPermission 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <uses-permission>} tags included under <manifest>, 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PERMISSIONS} was set. This list includes 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * all permissions requested, even those that were not granted or known 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by the system at install time. 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String[] requestedPermissions; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all signatures read from the package file. This is only filled 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in if the flag {@link PackageManager#GET_SIGNATURES} was set. 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Signature[] signatures; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Application specified preferred configuration 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.styleable#AndroidManifestUsesConfiguration 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <uses-configuration>} tags included under <manifest>, 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_CONFIGURATIONS} was set. 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo[] configPreferences; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo() { 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "PackageInfo{" 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + packageName + "}"; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int parcelableFlags) { 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(packageName); 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(versionCode); 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(versionName); 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(sharedUserId); 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(sharedUserLabel); 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (applicationInfo != null) { 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo.writeToParcel(dest, parcelableFlags); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeIntArray(gids); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(activities, parcelableFlags); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(receivers, parcelableFlags); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(services, parcelableFlags); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(providers, parcelableFlags); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(instrumentation, parcelableFlags); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(permissions, parcelableFlags); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeStringArray(requestedPermissions); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(signatures, parcelableFlags); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(configPreferences, parcelableFlags); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<PackageInfo> CREATOR 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<PackageInfo>() { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo createFromParcel(Parcel source) { 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo(source); 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo[] newArray(int size) { 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo[size]; 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private PackageInfo(Parcel source) { 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = source.readString(); 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionCode = source.readInt(); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionName = source.readString(); 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserId = source.readString(); 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserLabel = source.readInt(); 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int hasApp = source.readInt(); 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (hasApp != 0) { 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gids = source.createIntArray(); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project activities = source.createTypedArray(ActivityInfo.CREATOR); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project receivers = source.createTypedArray(ActivityInfo.CREATOR); 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project services = source.createTypedArray(ServiceInfo.CREATOR); 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project providers = source.createTypedArray(ProviderInfo.CREATOR); 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project permissions = source.createTypedArray(PermissionInfo.CREATOR); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project requestedPermissions = source.createStringArray(); 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project signatures = source.createTypedArray(Signature.CREATOR); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 200