PackageInfo.java revision 272bf3a274daff62995caf05da338c1f2a73dae3
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    /**
346c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * The names of any installed split APKs for this package.
356c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     */
366c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey    public String[] splitNames;
376c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey
386c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey    /**
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The version number of this package, as specified by the <manifest>
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_versionCode versionCode}
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int versionCode;
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The version name of this package, as specified by the <manifest>
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_versionName versionName}
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String versionName;
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The shared user ID name of this package, as specified by the <manifest>
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_sharedUserId sharedUserId}
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String sharedUserId;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * The shared user ID label of this package, as specified by the <manifest>
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * tag's {@link android.R.styleable#AndroidManifest_sharedUserLabel sharedUserLabel}
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * attribute.
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int sharedUserLabel;
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Information collected from the <application> tag, or null if
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * there was none.
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ApplicationInfo applicationInfo;
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
7378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * The time at which the app was first installed.  Units are as
7478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * per {@link System#currentTimeMillis()}.
7578d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     */
7678d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    public long firstInstallTime;
7778d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn
7878d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    /**
7978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * The time at which the app was last updated.  Units are as
8078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     * per {@link System#currentTimeMillis()}.
8178d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn     */
8278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    public long lastUpdateTime;
8378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn
8478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn    /**
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * All kernel group-IDs that have been assigned to this package.
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * This is only filled in if the flag {@link PackageManager#GET_GIDS} was set.
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int[] gids;
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestActivity
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <activity>} tags included under <application>,
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_ACTIVITIES} was set.
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ActivityInfo[] activities;
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestReceiver
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <receiver>} tags included under <application>,
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_RECEIVERS} was set.
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ActivityInfo[] receivers;
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestService
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <service>} tags included under <application>,
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_SERVICES} was set.
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ServiceInfo[] services;
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestProvider
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <provider>} tags included under <application>,
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_PROVIDERS} was set.
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ProviderInfo[] providers;
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestInstrumentation
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <instrumentation>} tags included under <manifest>,
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_INSTRUMENTATION} was set.
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public InstrumentationInfo[] instrumentation;
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestPermission
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <permission>} tags included under <manifest>,
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_PERMISSIONS} was set.
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PermissionInfo[] permissions;
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all {@link android.R.styleable#AndroidManifestUsesPermission
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * <uses-permission>} tags included under <manifest>,
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none.  This is only filled in if the flag
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link PackageManager#GET_PERMISSIONS} was set.  This list includes
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * all permissions requested, even those that were not granted or known
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * by the system at install time.
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String[] requestedPermissions;
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
149e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * Array of flags of all {@link android.R.styleable#AndroidManifestUsesPermission
150e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * <uses-permission>} tags included under <manifest>,
151e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * or null if there were none.  This is only filled in if the flag
152e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * {@link PackageManager#GET_PERMISSIONS} was set.  Each value matches
153e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * the corresponding entry in {@link #requestedPermissions}, and will have
154e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * the flags {@link #REQUESTED_PERMISSION_REQUIRED} and
155e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate.
156e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     */
157e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    public int[] requestedPermissionsFlags;
158e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
159e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    /**
160e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * Flag for {@link #requestedPermissionsFlags}: the requested permission
161e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * is required for the application to run; the user can not optionally
16232eb5b182458c05f744f9ab2963a13ef620ce069Nick Kralevich     * disable it.  Currently all permissions are required.
163e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     */
164e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    public static final int REQUESTED_PERMISSION_REQUIRED = 1<<0;
165e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
166e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    /**
167e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * Flag for {@link #requestedPermissionsFlags}: the requested permission
168e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     * is currently granted to the application.
169e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn     */
170e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    public static final int REQUESTED_PERMISSION_GRANTED = 1<<1;
171e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn
172e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn    /**
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Array of all signatures read from the package file.  This is only filled
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * in if the flag {@link PackageManager#GET_SIGNATURES} was set.
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Signature[] signatures;
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Application specified preferred configuration
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * {@link android.R.styleable#AndroidManifestUsesConfiguration
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * &lt;uses-configuration&gt;} tags included under &lt;manifest&gt;,
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * or null if there were none. This is only filled in if the flag
183d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     * {@link PackageManager#GET_CONFIGURATIONS} was set.
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ConfigurationInfo[] configPreferences;
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
18749237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn    /**
188da96e137bcc8191c584ada7b5de31eaae92f244fJeff Sharkey     * Features that this application has requested.
189da96e137bcc8191c584ada7b5de31eaae92f244fJeff Sharkey     *
190da96e137bcc8191c584ada7b5de31eaae92f244fJeff Sharkey     * @see FeatureInfo#FLAG_REQUIRED
19149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn     */
19249237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn    public FeatureInfo[] reqFeatures;
193117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu
194117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
195d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     * Groups of features that this application has requested.
196d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     * Each group contains a set of features that are required.
197d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     * A device must match the features listed in {@link #reqFeatures} and one
198d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     * or more FeatureGroups in order to have satisfied the feature requirement.
199d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     *
200d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     * @see FeatureInfo#FLAG_REQUIRED
201d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski     */
202d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski    public FeatureGroupInfo[] featureGroups;
203d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski
204d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski    /**
205117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * Constant corresponding to <code>auto</code> in
206117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * the {@link android.R.attr#installLocation} attribute.
207117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * @hide
208117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
20990d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu    public static final int INSTALL_LOCATION_UNSPECIFIED = -1;
2106c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey
21190d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu    /**
2126c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * Constant corresponding to <code>auto</code> in the
2136c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * {@link android.R.attr#installLocation} attribute.
21490d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu     */
215117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_AUTO = 0;
2166c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey
217117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
2186c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * Constant corresponding to <code>internalOnly</code> in the
2196c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * {@link android.R.attr#installLocation} attribute.
220117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
221117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1;
2226c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey
223117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
2246c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * Constant corresponding to <code>preferExternal</code> in the
2256c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * {@link android.R.attr#installLocation} attribute.
226117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
227117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2;
2286c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey
229117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    /**
2306c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * The install location requested by the package. From the
231117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link android.R.attr#installLocation} attribute, one of
2326c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey     * {@link #INSTALL_LOCATION_AUTO}, {@link #INSTALL_LOCATION_INTERNAL_ONLY},
233117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     * {@link #INSTALL_LOCATION_PREFER_EXTERNAL}
234117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu     */
235117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu    public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY;
236df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani
237df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani    /** @hide */
238272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao    public boolean coreApp;
239272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao
240272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao    /** @hide */
241df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani    public boolean requiredForAllUsers;
242df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani
2430ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani    /** @hide */
2440ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani    public String restrictedAccountType;
2450ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani
246ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani    /** @hide */
247ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani    public String requiredAccountType;
248ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani
24948d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad    /**
25048d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad     * What package, if any, this package will overlay.
25148d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad     *
25248d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad     * Package name of target package, or null.
25348d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad     * @hide
25448d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad     */
25548d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad    public String overlayTarget;
25648d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public PackageInfo() {
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return "PackageInfo{"
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + Integer.toHexString(System.identityHashCode(this))
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            + " " + packageName + "}";
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int parcelableFlags) {
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(packageName);
2726c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey        dest.writeStringArray(splitNames);
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(versionCode);
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(versionName);
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeString(sharedUserId);
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(sharedUserLabel);
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (applicationInfo != null) {
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(1);
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo.writeToParcel(dest, parcelableFlags);
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            dest.writeInt(0);
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
28378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(firstInstallTime);
28478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        dest.writeLong(lastUpdateTime);
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeIntArray(gids);
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(activities, parcelableFlags);
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(receivers, parcelableFlags);
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(services, parcelableFlags);
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(providers, parcelableFlags);
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(instrumentation, parcelableFlags);
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(permissions, parcelableFlags);
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeStringArray(requestedPermissions);
293e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn        dest.writeIntArray(requestedPermissionsFlags);
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(signatures, parcelableFlags);
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeTypedArray(configPreferences, parcelableFlags);
29649237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        dest.writeTypedArray(reqFeatures, parcelableFlags);
297d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski        dest.writeTypedArray(featureGroups, parcelableFlags);
298117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        dest.writeInt(installLocation);
299272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao        dest.writeInt(coreApp ? 1 : 0);
300df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani        dest.writeInt(requiredForAllUsers ? 1 : 0);
3010ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani        dest.writeString(restrictedAccountType);
302ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani        dest.writeString(requiredAccountType);
30348d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad        dest.writeString(overlayTarget);
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final Parcelable.Creator<PackageInfo> CREATOR
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            = new Parcelable.Creator<PackageInfo>() {
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo createFromParcel(Parcel source) {
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo(source);
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public PackageInfo[] newArray(int size) {
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new PackageInfo[size];
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private PackageInfo(Parcel source) {
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        packageName = source.readString();
3196c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey        splitNames = source.readStringArray();
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionCode = source.readInt();
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        versionName = source.readString();
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserId = source.readString();
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        sharedUserLabel = source.readInt();
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        int hasApp = source.readInt();
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (hasApp != 0) {
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source);
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
32878d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        firstInstallTime = source.readLong();
32978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn        lastUpdateTime = source.readLong();
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        gids = source.createIntArray();
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        activities = source.createTypedArray(ActivityInfo.CREATOR);
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        receivers = source.createTypedArray(ActivityInfo.CREATOR);
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        services = source.createTypedArray(ServiceInfo.CREATOR);
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        providers = source.createTypedArray(ProviderInfo.CREATOR);
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR);
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        permissions = source.createTypedArray(PermissionInfo.CREATOR);
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        requestedPermissions = source.createStringArray();
338e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn        requestedPermissionsFlags = source.createIntArray();
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        signatures = source.createTypedArray(Signature.CREATOR);
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR);
34149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn        reqFeatures = source.createTypedArray(FeatureInfo.CREATOR);
342d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski        featureGroups = source.createTypedArray(FeatureGroupInfo.CREATOR);
343117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu        installLocation = source.readInt();
344272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao        coreApp = source.readInt() != 0;
345df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani        requiredForAllUsers = source.readInt() != 0;
3460ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani        restrictedAccountType = source.readString();
347ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani        requiredAccountType = source.readString();
34848d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad        overlayTarget = source.readString();
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
351