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 * <uses-configuration>} tags included under <manifest>, 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