PackageInfo.java revision da96e137bcc8191c584ada7b5de31eaae92f244f
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 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@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 /** 195117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * Constant corresponding to <code>auto</code> in 196117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * the {@link android.R.attr#installLocation} attribute. 197117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * @hide 198117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 19990d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu public static final int INSTALL_LOCATION_UNSPECIFIED = -1; 2006c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 20190d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu /** 2026c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * Constant corresponding to <code>auto</code> in the 2036c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link android.R.attr#installLocation} attribute. 20490d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu */ 205117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_AUTO = 0; 2066c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 207117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 2086c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * Constant corresponding to <code>internalOnly</code> in the 2096c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link android.R.attr#installLocation} attribute. 210117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 211117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; 2126c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 213117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 2146c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * Constant corresponding to <code>preferExternal</code> in the 2156c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link android.R.attr#installLocation} attribute. 216117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 217117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; 2186c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 219117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 220531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * Flag for {@link #requiredForProfile} 221531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * The application will always be installed for a restricted profile. 222531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * @hide 223531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot */ 224531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot public static final int RESTRICTED_PROFILE = 1; 225531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot /** 226531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * Flag for {@link #requiredForProfile} 227531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * The application will always be installed for a managed profile. 228531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * @hide 229531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot */ 230531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot public static final int MANAGED_PROFILE = 2; 231531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot 232531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot /** 2336c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * The install location requested by the package. From the 234117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link android.R.attr#installLocation} attribute, one of 2356c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link #INSTALL_LOCATION_AUTO}, {@link #INSTALL_LOCATION_INTERNAL_ONLY}, 236117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link #INSTALL_LOCATION_PREFER_EXTERNAL} 237117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 238117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY; 239df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani 240531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot /** 241531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * Defines which profiles this app is required for. 242531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot * @hide 243531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot */ 244531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot public int requiredForProfile; 245531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot 246df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani /** @hide */ 247df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani public boolean requiredForAllUsers; 248df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani 2490ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani /** @hide */ 2500ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani public String restrictedAccountType; 2510ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani 252ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani /** @hide */ 253ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani public String requiredAccountType; 254ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani 25548d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad /** 25648d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * What package, if any, this package will overlay. 25748d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * 25848d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * Package name of target package, or null. 25948d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * @hide 26048d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad */ 26148d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad public String overlayTarget; 26248d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo() { 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "PackageInfo{" 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + packageName + "}"; 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int parcelableFlags) { 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(packageName); 2786c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey dest.writeStringArray(splitNames); 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(versionCode); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(versionName); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(sharedUserId); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(sharedUserLabel); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (applicationInfo != null) { 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo.writeToParcel(dest, parcelableFlags); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn dest.writeLong(firstInstallTime); 29078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn dest.writeLong(lastUpdateTime); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeIntArray(gids); 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(activities, parcelableFlags); 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(receivers, parcelableFlags); 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(services, parcelableFlags); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(providers, parcelableFlags); 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(instrumentation, parcelableFlags); 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(permissions, parcelableFlags); 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeStringArray(requestedPermissions); 299e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn dest.writeIntArray(requestedPermissionsFlags); 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(signatures, parcelableFlags); 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(configPreferences, parcelableFlags); 30249237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn dest.writeTypedArray(reqFeatures, parcelableFlags); 303117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu dest.writeInt(installLocation); 304df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani dest.writeInt(requiredForAllUsers ? 1 : 0); 305531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot dest.writeInt(requiredForProfile); 3060ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani dest.writeString(restrictedAccountType); 307ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani dest.writeString(requiredAccountType); 30848d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad dest.writeString(overlayTarget); 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<PackageInfo> CREATOR 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<PackageInfo>() { 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo createFromParcel(Parcel source) { 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo(source); 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo[] newArray(int size) { 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo[size]; 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private PackageInfo(Parcel source) { 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = source.readString(); 3246c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey splitNames = source.readStringArray(); 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionCode = source.readInt(); 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionName = source.readString(); 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserId = source.readString(); 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserLabel = source.readInt(); 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int hasApp = source.readInt(); 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (hasApp != 0) { 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 33378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn firstInstallTime = source.readLong(); 33478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn lastUpdateTime = source.readLong(); 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gids = source.createIntArray(); 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project activities = source.createTypedArray(ActivityInfo.CREATOR); 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project receivers = source.createTypedArray(ActivityInfo.CREATOR); 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project services = source.createTypedArray(ServiceInfo.CREATOR); 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project providers = source.createTypedArray(ProviderInfo.CREATOR); 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR); 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project permissions = source.createTypedArray(PermissionInfo.CREATOR); 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project requestedPermissions = source.createStringArray(); 343e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn requestedPermissionsFlags = source.createIntArray(); 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project signatures = source.createTypedArray(Signature.CREATOR); 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); 34649237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); 347117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu installLocation = source.readInt(); 348df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani requiredForAllUsers = source.readInt() != 0; 349531270a4a177a9f245d328d9467c6d1adbd5354aNicolas Prevot requiredForProfile = source.readInt(); 3500ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani restrictedAccountType = source.readString(); 351ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani requiredAccountType = source.readString(); 35248d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad overlayTarget = source.readString(); 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 355