| package android.content.pm; |
| |
| import android.os.Parcel; |
| import android.os.Parcelable; |
| |
| /** |
| * Overall information about the contents of a package. This corresponds |
| * to all of the information collected from AndroidManifest.xml. |
| */ |
| public class PackageInfo implements Parcelable { |
| /** |
| * The name of this package. From the <manifest> tag's "name" |
| * attribute. |
| */ |
| public String packageName; |
| |
| /** |
| * The version number of this package, as specified by the <manifest> |
| * tag's {@link android.R.styleable#AndroidManifest_versionCode versionCode} |
| * attribute. |
| */ |
| public int versionCode; |
| |
| /** |
| * The version name of this package, as specified by the <manifest> |
| * tag's {@link android.R.styleable#AndroidManifest_versionName versionName} |
| * attribute. |
| */ |
| public String versionName; |
| |
| /** |
| * The shared user ID name of this package, as specified by the <manifest> |
| * tag's {@link android.R.styleable#AndroidManifest_sharedUserId sharedUserId} |
| * attribute. |
| */ |
| public String sharedUserId; |
| |
| /** |
| * The shared user ID label of this package, as specified by the <manifest> |
| * tag's {@link android.R.styleable#AndroidManifest_sharedUserLabel sharedUserLabel} |
| * attribute. |
| */ |
| public int sharedUserLabel; |
| |
| /** |
| * Information collected from the <application> tag, or null if |
| * there was none. |
| */ |
| public ApplicationInfo applicationInfo; |
| |
| /** |
| * All kernel group-IDs that have been assigned to this package. |
| * This is only filled in if the flag {@link PackageManager#GET_GIDS} was set. |
| */ |
| public int[] gids; |
| |
| /** |
| * Array of all {@link android.R.styleable#AndroidManifestActivity |
| * <activity>} tags included under <application>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_ACTIVITIES} was set. |
| */ |
| public ActivityInfo[] activities; |
| |
| /** |
| * Array of all {@link android.R.styleable#AndroidManifestReceiver |
| * <receiver>} tags included under <application>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_RECEIVERS} was set. |
| */ |
| public ActivityInfo[] receivers; |
| |
| /** |
| * Array of all {@link android.R.styleable#AndroidManifestService |
| * <service>} tags included under <application>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_SERVICES} was set. |
| */ |
| public ServiceInfo[] services; |
| |
| /** |
| * Array of all {@link android.R.styleable#AndroidManifestProvider |
| * <provider>} tags included under <application>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_PROVIDERS} was set. |
| */ |
| public ProviderInfo[] providers; |
| |
| /** |
| * Array of all {@link android.R.styleable#AndroidManifestInstrumentation |
| * <instrumentation>} tags included under <manifest>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_INSTRUMENTATION} was set. |
| */ |
| public InstrumentationInfo[] instrumentation; |
| |
| /** |
| * Array of all {@link android.R.styleable#AndroidManifestPermission |
| * <permission>} tags included under <manifest>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_PERMISSIONS} was set. |
| */ |
| public PermissionInfo[] permissions; |
| |
| /** |
| * Array of all {@link android.R.styleable#AndroidManifestUsesPermission |
| * <uses-permission>} tags included under <manifest>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_PERMISSIONS} was set. This list includes |
| * all permissions requested, even those that were not granted or known |
| * by the system at install time. |
| */ |
| public String[] requestedPermissions; |
| |
| /** |
| * Array of all signatures read from the package file. This is only filled |
| * in if the flag {@link PackageManager#GET_SIGNATURES} was set. |
| */ |
| public Signature[] signatures; |
| |
| /** |
| * Application specified preferred configuration |
| * {@link android.R.styleable#AndroidManifestUsesConfiguration |
| * <uses-configuration>} tags included under <manifest>, |
| * or null if there were none. This is only filled in if the flag |
| * {@link PackageManager#GET_CONFIGURATIONS} was set. |
| */ |
| public ConfigurationInfo[] configPreferences; |
| |
| /** |
| * The features that this application has said it requires. |
| */ |
| public FeatureInfo[] reqFeatures; |
| |
| /** |
| * Constant corresponding to <code>auto</code> in |
| * the {@link android.R.attr#installLocation} attribute. |
| * @hide |
| */ |
| public static final int INSTALL_LOCATION_AUTO = 0; |
| /** |
| * Constant corresponding to <code>internalOnly</code> in |
| * the {@link android.R.attr#installLocation} attribute. |
| * @hide |
| */ |
| public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; |
| /** |
| * Constant corresponding to <code>preferExternal</code> in |
| * the {@link android.R.attr#installLocation} attribute. |
| * @hide |
| */ |
| public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; |
| /** |
| * The launch mode style requested by the activity. From the |
| * {@link android.R.attr#installLocation} attribute, one of |
| * {@link #INSTALL_LOCATION_AUTO}, |
| * {@link #INSTALL_LOCATION_INTERNAL_ONLY}, |
| * {@link #INSTALL_LOCATION_PREFER_EXTERNAL} |
| * @hide |
| */ |
| public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY; |
| |
| public PackageInfo() { |
| } |
| |
| public String toString() { |
| return "PackageInfo{" |
| + Integer.toHexString(System.identityHashCode(this)) |
| + " " + packageName + "}"; |
| } |
| |
| public int describeContents() { |
| return 0; |
| } |
| |
| public void writeToParcel(Parcel dest, int parcelableFlags) { |
| dest.writeString(packageName); |
| dest.writeInt(versionCode); |
| dest.writeString(versionName); |
| dest.writeString(sharedUserId); |
| dest.writeInt(sharedUserLabel); |
| if (applicationInfo != null) { |
| dest.writeInt(1); |
| applicationInfo.writeToParcel(dest, parcelableFlags); |
| } else { |
| dest.writeInt(0); |
| } |
| dest.writeIntArray(gids); |
| dest.writeTypedArray(activities, parcelableFlags); |
| dest.writeTypedArray(receivers, parcelableFlags); |
| dest.writeTypedArray(services, parcelableFlags); |
| dest.writeTypedArray(providers, parcelableFlags); |
| dest.writeTypedArray(instrumentation, parcelableFlags); |
| dest.writeTypedArray(permissions, parcelableFlags); |
| dest.writeStringArray(requestedPermissions); |
| dest.writeTypedArray(signatures, parcelableFlags); |
| dest.writeTypedArray(configPreferences, parcelableFlags); |
| dest.writeTypedArray(reqFeatures, parcelableFlags); |
| dest.writeInt(installLocation); |
| } |
| |
| public static final Parcelable.Creator<PackageInfo> CREATOR |
| = new Parcelable.Creator<PackageInfo>() { |
| public PackageInfo createFromParcel(Parcel source) { |
| return new PackageInfo(source); |
| } |
| |
| public PackageInfo[] newArray(int size) { |
| return new PackageInfo[size]; |
| } |
| }; |
| |
| private PackageInfo(Parcel source) { |
| packageName = source.readString(); |
| versionCode = source.readInt(); |
| versionName = source.readString(); |
| sharedUserId = source.readString(); |
| sharedUserLabel = source.readInt(); |
| int hasApp = source.readInt(); |
| if (hasApp != 0) { |
| applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source); |
| } |
| gids = source.createIntArray(); |
| activities = source.createTypedArray(ActivityInfo.CREATOR); |
| receivers = source.createTypedArray(ActivityInfo.CREATOR); |
| services = source.createTypedArray(ServiceInfo.CREATOR); |
| providers = source.createTypedArray(ProviderInfo.CREATOR); |
| instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR); |
| permissions = source.createTypedArray(PermissionInfo.CREATOR); |
| requestedPermissions = source.createStringArray(); |
| signatures = source.createTypedArray(Signature.CREATOR); |
| configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); |
| reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); |
| installLocation = source.readInt(); |
| } |
| } |