115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/*
215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2007 The Android Open Source Project
315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License");
515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License.
615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at
715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *      http://www.apache.org/licenses/LICENSE-2.0
915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software
1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS,
1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and
1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License.
1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */
1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Overall information about the contents of a package.  This corresponds
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to all of the information collected from AndroidManifest.xml.
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class PackageInfo implements Parcelable {
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The name of this package.  From the <manifest> tag's "name"
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String packageName;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The version number of this package, as specified by the <manifest>
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_versionCode versionCode}
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int versionCode;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The version name of this package, as specified by the <manifest>
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_versionName versionName}
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String versionName;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The shared user ID name of this package, as specified by the <manifest>
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_sharedUserId sharedUserId}
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String sharedUserId;
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The shared user ID label of this package, as specified by the <manifest>
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_sharedUserLabel sharedUserLabel}
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int sharedUserLabel;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Information collected from the <application> tag, or null if
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * there was none.
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ApplicationInfo applicationInfo;
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
6878d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * The time at which the app was first installed.  Units are as
6978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * per {@link System#currentTimeMillis()}.
7078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     */
7178d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    public long firstInstallTime;
7278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn
7378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    /**
7478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * The time at which the app was last updated.  Units are as
7578d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * per {@link System#currentTimeMillis()}.
7678d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     */
7778d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    public long lastUpdateTime;
7878d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn
7978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    /**
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * All kernel group-IDs that have been assigned to this package.
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This is only filled in if the flag {@link PackageManager#GET_GIDS} was set.
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int[] gids;
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestActivity
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <activity>} tags included under <application>,
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_ACTIVITIES} was set.
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ActivityInfo[] activities;
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestReceiver
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <receiver>} tags included under <application>,
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_RECEIVERS} was set.
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ActivityInfo[] receivers;
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestService
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <service>} tags included under <application>,
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_SERVICES} was set.
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ServiceInfo[] services;
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestProvider
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <provider>} tags included under <application>,
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_PROVIDERS} was set.
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ProviderInfo[] providers;
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestInstrumentation
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <instrumentation>} tags included under <manifest>,
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_INSTRUMENTATION} was set.
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public InstrumentationInfo[] instrumentation;
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestPermission
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <permission>} tags included under <manifest>,
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_PERMISSIONS} was set.
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PermissionInfo[] permissions;
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestUsesPermission
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <uses-permission>} tags included under <manifest>,
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_PERMISSIONS} was set.  This list includes
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all permissions requested, even those that were not granted or known
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by the system at install time.
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String[] requestedPermissions;
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all signatures read from the package file.  This is only filled
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in if the flag {@link PackageManager#GET_SIGNATURES} was set.
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Signature[] signatures;
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Application specified preferred configuration
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.styleable#AndroidManifestUsesConfiguration
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <uses-configuration>} tags included under <manifest>,
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none. This is only filled in if the flag
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_CONFIGURATIONS} was set.
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ConfigurationInfo[] configPreferences;
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
15849237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn    /**
15949237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     * The features that this application has said it requires.
16049237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     */
16149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn    public FeatureInfo[] reqFeatures;
162117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu
163117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
164117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * Constant corresponding to <code>auto</code> in
165117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
166117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
167117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
16890d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu    public static final int INSTALL_LOCATION_UNSPECIFIED = -1;
16990d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu    /**
17090d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     * Constant corresponding to <code>auto</code> in
17190d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
17290d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     * @hide
17390d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     */
174117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_AUTO = 0;
175117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
176117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * Constant corresponding to <code>internalOnly</code> in
177117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
178117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
179117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
180117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1;
181117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
182117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * Constant corresponding to <code>preferExternal</code> in
183117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
184117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
185117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
186117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2;
187117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
188a2b6c3775ed6b8924232d6a01bae4a19740a15f8Suchi Amalapurapu     * The install location requested by the activity.  From the
189117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link android.R.attr#installLocation} attribute, one of
190117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link #INSTALL_LOCATION_AUTO},
191117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link #INSTALL_LOCATION_INTERNAL_ONLY},
192117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link #INSTALL_LOCATION_PREFER_EXTERNAL}
193117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
194117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
195117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY;
19649237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PackageInfo() {
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "PackageInfo{"
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + Integer.toHexString(System.identityHashCode(this))
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + " " + packageName + "}";
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int parcelableFlags) {
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(packageName);
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(versionCode);
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(versionName);
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(sharedUserId);
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(sharedUserLabel);
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (applicationInfo != null) {
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(1);
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo.writeToParcel(dest, parcelableFlags);
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(0);
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
22278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(firstInstallTime);
22378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(lastUpdateTime);
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeIntArray(gids);
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(activities, parcelableFlags);
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(receivers, parcelableFlags);
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(services, parcelableFlags);
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(providers, parcelableFlags);
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(instrumentation, parcelableFlags);
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(permissions, parcelableFlags);
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeStringArray(requestedPermissions);
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(signatures, parcelableFlags);
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(configPreferences, parcelableFlags);
23449237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        dest.writeTypedArray(reqFeatures, parcelableFlags);
235117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        dest.writeInt(installLocation);
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final Parcelable.Creator<PackageInfo> CREATOR
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            = new Parcelable.Creator<PackageInfo>() {
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo createFromParcel(Parcel source) {
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo(source);
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo[] newArray(int size) {
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo[size];
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private PackageInfo(Parcel source) {
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        packageName = source.readString();
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionCode = source.readInt();
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionName = source.readString();
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserId = source.readString();
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserLabel = source.readInt();
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int hasApp = source.readInt();
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (hasApp != 0) {
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source);
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
25978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        firstInstallTime = source.readLong();
26078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        lastUpdateTime = source.readLong();
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        gids = source.createIntArray();
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        activities = source.createTypedArray(ActivityInfo.CREATOR);
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        receivers = source.createTypedArray(ActivityInfo.CREATOR);
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        services = source.createTypedArray(ServiceInfo.CREATOR);
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        providers = source.createTypedArray(ProviderInfo.CREATOR);
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR);
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        permissions = source.createTypedArray(PermissionInfo.CREATOR);
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        requestedPermissions = source.createStringArray();
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        signatures = source.createTypedArray(Signature.CREATOR);
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
27149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
272117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        installLocation = source.readInt();
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
275