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    /**
144e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * Array of flags of all {@link android.R.styleable#AndroidManifestUsesPermission
145e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * <uses-permission>} tags included under <manifest>,
146e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * or null if there were none.  This is only filled in if the flag
147e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * {@link PackageManager#GET_PERMISSIONS} was set.  Each value matches
148e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * the corresponding entry in {@link #requestedPermissions}, and will have
149e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * the flags {@link #REQUESTED_PERMISSION_REQUIRED} and
150e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate.
151e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     */
152e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    public int[] requestedPermissionsFlags;
153e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
154e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    /**
155e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * Flag for {@link #requestedPermissionsFlags}: the requested permission
156e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * is required for the application to run; the user can not optionally
157e824120016248bcfe3962883fe9f3b0481dd1c3dDianne Hackborn     * disable it.  Currently all permissions are required.
158e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     */
159e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    public static final int REQUESTED_PERMISSION_REQUIRED = 1<<0;
160e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
161e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    /**
162e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * Flag for {@link #requestedPermissionsFlags}: the requested permission
163e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * is currently granted to the application.
164e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     */
165e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    public static final int REQUESTED_PERMISSION_GRANTED = 1<<1;
166e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
167e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    /**
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all signatures read from the package file.  This is only filled
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in if the flag {@link PackageManager#GET_SIGNATURES} was set.
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Signature[] signatures;
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Application specified preferred configuration
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.styleable#AndroidManifestUsesConfiguration
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * &lt;uses-configuration&gt;} tags included under &lt;manifest&gt;,
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none. This is only filled in if the flag
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_CONFIGURATIONS} was set.
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ConfigurationInfo[] configPreferences;
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
18249237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn    /**
18349237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     * The features that this application has said it requires.
18449237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     */
18549237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn    public FeatureInfo[] reqFeatures;
186117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu
187117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
188117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * Constant corresponding to <code>auto</code> in
189117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
190117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
191117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
19290d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu    public static final int INSTALL_LOCATION_UNSPECIFIED = -1;
19390d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu    /**
19490d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     * Constant corresponding to <code>auto</code> in
19590d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
19690d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     * @hide
19790d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     */
198117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_AUTO = 0;
199117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
200117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * Constant corresponding to <code>internalOnly</code> in
201117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
202117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
203117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
204117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1;
205117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
206117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * Constant corresponding to <code>preferExternal</code> in
207117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
208117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
209117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
210117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2;
211117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
212a2b6c3775ed6b8924232d6a01bae4a19740a15f8Suchi Amalapurapu     * The install location requested by the activity.  From the
213117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link android.R.attr#installLocation} attribute, one of
214117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link #INSTALL_LOCATION_AUTO},
215117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link #INSTALL_LOCATION_INTERNAL_ONLY},
216117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link #INSTALL_LOCATION_PREFER_EXTERNAL}
217117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
218117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
219117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY;
22049237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PackageInfo() {
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "PackageInfo{"
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + Integer.toHexString(System.identityHashCode(this))
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + " " + packageName + "}";
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int parcelableFlags) {
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(packageName);
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(versionCode);
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(versionName);
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(sharedUserId);
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(sharedUserLabel);
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (applicationInfo != null) {
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(1);
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo.writeToParcel(dest, parcelableFlags);
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(0);
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
24678d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(firstInstallTime);
24778d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(lastUpdateTime);
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeIntArray(gids);
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(activities, parcelableFlags);
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(receivers, parcelableFlags);
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(services, parcelableFlags);
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(providers, parcelableFlags);
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(instrumentation, parcelableFlags);
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(permissions, parcelableFlags);
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeStringArray(requestedPermissions);
256e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn        dest.writeIntArray(requestedPermissionsFlags);
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(signatures, parcelableFlags);
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(configPreferences, parcelableFlags);
25949237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        dest.writeTypedArray(reqFeatures, parcelableFlags);
260117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        dest.writeInt(installLocation);
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final Parcelable.Creator<PackageInfo> CREATOR
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            = new Parcelable.Creator<PackageInfo>() {
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo createFromParcel(Parcel source) {
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo(source);
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo[] newArray(int size) {
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo[size];
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private PackageInfo(Parcel source) {
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        packageName = source.readString();
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionCode = source.readInt();
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionName = source.readString();
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserId = source.readString();
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserLabel = source.readInt();
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int hasApp = source.readInt();
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (hasApp != 0) {
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source);
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
28478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        firstInstallTime = source.readLong();
28578d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        lastUpdateTime = source.readLong();
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        gids = source.createIntArray();
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        activities = source.createTypedArray(ActivityInfo.CREATOR);
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        receivers = source.createTypedArray(ActivityInfo.CREATOR);
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        services = source.createTypedArray(ServiceInfo.CREATOR);
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        providers = source.createTypedArray(ProviderInfo.CREATOR);
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR);
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        permissions = source.createTypedArray(PermissionInfo.CREATOR);
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        requestedPermissions = source.createStringArray();
294e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn        requestedPermissionsFlags = source.createIntArray();
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        signatures = source.createTypedArray(Signature.CREATOR);
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
29749237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
298117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        installLocation = source.readInt();
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
301