PackageInfo.java revision ccbe389b4d2cee16da77685c88fa1475bc08cdb9
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
15732eb5b182458c05f744f9ab2963a13ef620ce069Nick Kralevich     * 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;
220df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani
221df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani    /** @hide */
222df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani    public boolean requiredForAllUsers;
223df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani
2240ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani    /** @hide */
2250ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani    public String restrictedAccountType;
2260ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani
227ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani    /** @hide */
228ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani    public String requiredAccountType;
229ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PackageInfo() {
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "PackageInfo{"
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + Integer.toHexString(System.identityHashCode(this))
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + " " + packageName + "}";
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int parcelableFlags) {
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(packageName);
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(versionCode);
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(versionName);
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(sharedUserId);
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(sharedUserLabel);
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (applicationInfo != null) {
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(1);
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo.writeToParcel(dest, parcelableFlags);
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(0);
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
25578d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(firstInstallTime);
25678d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(lastUpdateTime);
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeIntArray(gids);
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(activities, parcelableFlags);
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(receivers, parcelableFlags);
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(services, parcelableFlags);
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(providers, parcelableFlags);
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(instrumentation, parcelableFlags);
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(permissions, parcelableFlags);
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeStringArray(requestedPermissions);
265e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn        dest.writeIntArray(requestedPermissionsFlags);
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(signatures, parcelableFlags);
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(configPreferences, parcelableFlags);
26849237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        dest.writeTypedArray(reqFeatures, parcelableFlags);
269117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        dest.writeInt(installLocation);
270df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani        dest.writeInt(requiredForAllUsers ? 1 : 0);
2710ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani        dest.writeString(restrictedAccountType);
272ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani        dest.writeString(requiredAccountType);
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final Parcelable.Creator<PackageInfo> CREATOR
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            = new Parcelable.Creator<PackageInfo>() {
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo createFromParcel(Parcel source) {
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo(source);
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo[] newArray(int size) {
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo[size];
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private PackageInfo(Parcel source) {
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        packageName = source.readString();
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionCode = source.readInt();
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionName = source.readString();
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserId = source.readString();
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserLabel = source.readInt();
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int hasApp = source.readInt();
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (hasApp != 0) {
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source);
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
29678d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        firstInstallTime = source.readLong();
29778d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        lastUpdateTime = source.readLong();
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        gids = source.createIntArray();
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        activities = source.createTypedArray(ActivityInfo.CREATOR);
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        receivers = source.createTypedArray(ActivityInfo.CREATOR);
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        services = source.createTypedArray(ServiceInfo.CREATOR);
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        providers = source.createTypedArray(ProviderInfo.CREATOR);
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR);
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        permissions = source.createTypedArray(PermissionInfo.CREATOR);
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        requestedPermissions = source.createStringArray();
306e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn        requestedPermissionsFlags = source.createIntArray();
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        signatures = source.createTypedArray(Signature.CREATOR);
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
30949237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
310117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        installLocation = source.readInt();
311df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani        requiredForAllUsers = source.readInt() != 0;
3120ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani        restrictedAccountType = source.readString();
313ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani        requiredAccountType = source.readString();
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
316