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; 4488d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey 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; 5188d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey 5288d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey /** 5388d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * The revision number of the base APK for this package, as specified by the 5488d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * <manifest> tag's 5588d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * {@link android.R.styleable#AndroidManifest_revisionCode revisionCode} 5688d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * attribute. 5788d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey */ 5888d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey public int baseRevisionCode; 5988d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey 6088d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey /** 6188d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * The revision number of any split APKs for this package, as specified by 6288d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * the <manifest> tag's 6388d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * {@link android.R.styleable#AndroidManifest_revisionCode revisionCode} 6488d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey * attribute. Indexes are a 1:1 mapping against {@link #splitNames}. 6588d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey */ 6688d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey public int[] splitRevisionCodes; 6788d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The shared user ID name of this package, as specified by the <manifest> 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_sharedUserId sharedUserId} 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String sharedUserId; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The shared user ID label of this package, as specified by the <manifest> 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_sharedUserLabel sharedUserLabel} 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int sharedUserLabel; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information collected from the <application> tag, or null if 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there was none. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ApplicationInfo applicationInfo; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * The time at which the app was first installed. Units are as 9078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * per {@link System#currentTimeMillis()}. 9178d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn */ 9278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn public long firstInstallTime; 9378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn 9478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn /** 9578d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * The time at which the app was last updated. Units are as 9678d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * per {@link System#currentTimeMillis()}. 9778d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn */ 9878d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn public long lastUpdateTime; 9978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn 10078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn /** 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * All kernel group-IDs that have been assigned to this package. 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is only filled in if the flag {@link PackageManager#GET_GIDS} was set. 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int[] gids; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestActivity 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <activity>} 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_ACTIVITIES} was set. 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ActivityInfo[] activities; 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestReceiver 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <receiver>} 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_RECEIVERS} was set. 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ActivityInfo[] receivers; 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestService 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <service>} tags included under <application>, 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_SERVICES} was set. 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceInfo[] services; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestProvider 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <provider>} tags included under <application>, 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_PROVIDERS} was set. 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ProviderInfo[] providers; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestInstrumentation 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <instrumentation>} 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_INSTRUMENTATION} was set. 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public InstrumentationInfo[] instrumentation; 1456788212d17f54475ca9c3dd689a863e031db868fSvet Ganov 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestPermission 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <permission>} tags included under <manifest>, 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PERMISSIONS} was set. 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PermissionInfo[] permissions; 1536788212d17f54475ca9c3dd689a863e031db868fSvet Ganov 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestUsesPermission 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <uses-permission>} tags included under <manifest>, 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PERMISSIONS} was set. This list includes 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * all permissions requested, even those that were not granted or known 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by the system at install time. 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String[] requestedPermissions; 1636788212d17f54475ca9c3dd689a863e031db868fSvet Ganov 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 165e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * Array of flags of all {@link android.R.styleable#AndroidManifestUsesPermission 166e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * <uses-permission>} tags included under <manifest>, 167e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * or null if there were none. This is only filled in if the flag 168e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * {@link PackageManager#GET_PERMISSIONS} was set. Each value matches 169e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * the corresponding entry in {@link #requestedPermissions}, and will have 170c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav * the flag {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate. 171e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn */ 172e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public int[] requestedPermissionsFlags; 173e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 174e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn /** 175e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * Flag for {@link #requestedPermissionsFlags}: the requested permission 176e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * is required for the application to run; the user can not optionally 17732eb5b182458c05f744f9ab2963a13ef620ce069Nick Kralevich * disable it. Currently all permissions are required. 178c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav * 179c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav * @removed We do not support required permissions. 180e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn */ 181e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public static final int REQUESTED_PERMISSION_REQUIRED = 1<<0; 182e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 183e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn /** 184e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * Flag for {@link #requestedPermissionsFlags}: the requested permission 185e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn * is currently granted to the application. 186e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn */ 187e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn public static final int REQUESTED_PERMISSION_GRANTED = 1<<1; 188e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn 189e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn /** 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all signatures read from the package file. This is only filled 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in if the flag {@link PackageManager#GET_SIGNATURES} was set. 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Signature[] signatures; 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Application specified preferred configuration 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.styleable#AndroidManifestUsesConfiguration 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <uses-configuration>} tags included under <manifest>, 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 200d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski * {@link PackageManager#GET_CONFIGURATIONS} was set. 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo[] configPreferences; 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20449237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn /** 205da96e137bcc8191c584ada7b5de31eaae92f244fJeff Sharkey * Features that this application has requested. 206da96e137bcc8191c584ada7b5de31eaae92f244fJeff Sharkey * 207da96e137bcc8191c584ada7b5de31eaae92f244fJeff Sharkey * @see FeatureInfo#FLAG_REQUIRED 20849237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn */ 20949237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn public FeatureInfo[] reqFeatures; 210117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu 211117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 212d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski * Groups of features that this application has requested. 213d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski * Each group contains a set of features that are required. 214d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski * A device must match the features listed in {@link #reqFeatures} and one 215d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski * or more FeatureGroups in order to have satisfied the feature requirement. 216d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski * 217d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski * @see FeatureInfo#FLAG_REQUIRED 218d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski */ 219d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski public FeatureGroupInfo[] featureGroups; 220d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski 221d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski /** 222117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * Constant corresponding to <code>auto</code> in 223117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * the {@link android.R.attr#installLocation} attribute. 224117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * @hide 225117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 22690d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu public static final int INSTALL_LOCATION_UNSPECIFIED = -1; 2276c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 22890d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu /** 2296c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * Constant corresponding to <code>auto</code> in the 2306c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link android.R.attr#installLocation} attribute. 23190d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu */ 232117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_AUTO = 0; 2336c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 234117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 2356c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * Constant corresponding to <code>internalOnly</code> in the 2366c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link android.R.attr#installLocation} attribute. 237117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 238117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; 2396c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 240117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 2416c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * Constant corresponding to <code>preferExternal</code> in the 2426c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link android.R.attr#installLocation} attribute. 243117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 244117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; 2456c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey 246117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 2476c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * The install location requested by the package. From the 248117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link android.R.attr#installLocation} attribute, one of 2496c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey * {@link #INSTALL_LOCATION_AUTO}, {@link #INSTALL_LOCATION_INTERNAL_ONLY}, 250117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link #INSTALL_LOCATION_PREFER_EXTERNAL} 251117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 252117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY; 253df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani 254df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani /** @hide */ 255272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao public boolean coreApp; 256272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao 257272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao /** @hide */ 258df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani public boolean requiredForAllUsers; 259df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani 2600ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani /** @hide */ 2610ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani public String restrictedAccountType; 2620ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani 263ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani /** @hide */ 264ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani public String requiredAccountType; 265ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani 26648d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad /** 26748d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * What package, if any, this package will overlay. 26848d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * 26948d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * Package name of target package, or null. 27048d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad * @hide 27148d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad */ 27248d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad public String overlayTarget; 27348d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad 2740434289c45bc18f81f26d66e6bcbf8facf128665Jaekyun Seok /** @hide */ 27542d53f6b1883e3db514ad8d105d23fe6a1e9a59bJaekyun Seok public int overlayPriority; 27642d53f6b1883e3db514ad8d105d23fe6a1e9a59bJaekyun Seok 27742d53f6b1883e3db514ad8d105d23fe6a1e9a59bJaekyun Seok /** @hide */ 2780434289c45bc18f81f26d66e6bcbf8facf128665Jaekyun Seok public boolean isStaticOverlay; 2790434289c45bc18f81f26d66e6bcbf8facf128665Jaekyun Seok 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo() { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28388d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey @Override 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "PackageInfo{" 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + packageName + "}"; 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29088d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey @Override 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 29588d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey @Override 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int parcelableFlags) { 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(packageName); 2986c833e07a05c48ca60ee4d72421bf8b1e78dc710Jeff Sharkey dest.writeStringArray(splitNames); 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(versionCode); 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(versionName); 30188d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey dest.writeInt(baseRevisionCode); 30288d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey dest.writeIntArray(splitRevisionCodes); 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(sharedUserId); 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(sharedUserLabel); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (applicationInfo != null) { 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo.writeToParcel(dest, parcelableFlags); 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31178d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn dest.writeLong(firstInstallTime); 31278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn dest.writeLong(lastUpdateTime); 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeIntArray(gids); 314b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate dest.writeTypedArray(activities, parcelableFlags | Parcelable.PARCELABLE_ELIDE_DUPLICATES); 315b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate dest.writeTypedArray(receivers, parcelableFlags | Parcelable.PARCELABLE_ELIDE_DUPLICATES); 316b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate dest.writeTypedArray(services, parcelableFlags | Parcelable.PARCELABLE_ELIDE_DUPLICATES); 317b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate dest.writeTypedArray(providers, parcelableFlags | Parcelable.PARCELABLE_ELIDE_DUPLICATES); 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(instrumentation, parcelableFlags); 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(permissions, parcelableFlags); 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeStringArray(requestedPermissions); 321e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn dest.writeIntArray(requestedPermissionsFlags); 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(signatures, parcelableFlags); 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(configPreferences, parcelableFlags); 32449237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn dest.writeTypedArray(reqFeatures, parcelableFlags); 325d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski dest.writeTypedArray(featureGroups, parcelableFlags); 326117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu dest.writeInt(installLocation); 327272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao dest.writeInt(coreApp ? 1 : 0); 328df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani dest.writeInt(requiredForAllUsers ? 1 : 0); 3290ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani dest.writeString(restrictedAccountType); 330ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani dest.writeString(requiredAccountType); 33148d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad dest.writeString(overlayTarget); 3320434289c45bc18f81f26d66e6bcbf8facf128665Jaekyun Seok dest.writeInt(isStaticOverlay ? 1 : 0); 33342d53f6b1883e3db514ad8d105d23fe6a1e9a59bJaekyun Seok dest.writeInt(overlayPriority); 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<PackageInfo> CREATOR 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<PackageInfo>() { 33888d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey @Override 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo createFromParcel(Parcel source) { 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo(source); 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 34388d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey @Override 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo[] newArray(int size) { 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo[size]; 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private PackageInfo(Parcel source) { 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = source.readString(); 35188d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey splitNames = source.createStringArray(); 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionCode = source.readInt(); 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionName = source.readString(); 35488d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey baseRevisionCode = source.readInt(); 35588d2a3c0e1b4a8c53a489db5d627beb80b1b9957Jeff Sharkey splitRevisionCodes = source.createIntArray(); 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserId = source.readString(); 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserLabel = source.readInt(); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int hasApp = source.readInt(); 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (hasApp != 0) { 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source); 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 36278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn firstInstallTime = source.readLong(); 36378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn lastUpdateTime = source.readLong(); 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gids = source.createIntArray(); 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project activities = source.createTypedArray(ActivityInfo.CREATOR); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project receivers = source.createTypedArray(ActivityInfo.CREATOR); 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project services = source.createTypedArray(ServiceInfo.CREATOR); 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project providers = source.createTypedArray(ProviderInfo.CREATOR); 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR); 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project permissions = source.createTypedArray(PermissionInfo.CREATOR); 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project requestedPermissions = source.createStringArray(); 372e639da7baa23121e35aa06d6e182558e0e755696Dianne Hackborn requestedPermissionsFlags = source.createIntArray(); 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project signatures = source.createTypedArray(Signature.CREATOR); 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); 37549237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); 376d3edfde51bd069a63e820282421d1a534fcf00ceAdam Lesinski featureGroups = source.createTypedArray(FeatureGroupInfo.CREATOR); 377117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu installLocation = source.readInt(); 378272bf3a274daff62995caf05da338c1f2a73dae3Jeff Hao coreApp = source.readInt() != 0; 379df2e92a535e19c00edd37318d974dab992ccc2c1Amith Yamasani requiredForAllUsers = source.readInt() != 0; 3800ac1fc9d233b8671f371a71e2a6374b47ef069a9Amith Yamasani restrictedAccountType = source.readString(); 381ccbe389b4d2cee16da77685c88fa1475bc08cdb9Amith Yamasani requiredAccountType = source.readString(); 38248d22323ce39f9aab003dce74456889b6414af55Mårten Kongstad overlayTarget = source.readString(); 3830434289c45bc18f81f26d66e6bcbf8facf128665Jaekyun Seok isStaticOverlay = source.readInt() != 0; 38442d53f6b1883e3db514ad8d105d23fe6a1e9a59bJaekyun Seok overlayPriority = source.readInt(); 385b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate 386b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate // The component lists were flattened with the redundant ApplicationInfo 387b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate // instances omitted. Distribute the canonical one here as appropriate. 388b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate if (applicationInfo != null) { 389b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate propagateApplicationInfo(applicationInfo, activities); 390b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate propagateApplicationInfo(applicationInfo, receivers); 391b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate propagateApplicationInfo(applicationInfo, services); 392b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate propagateApplicationInfo(applicationInfo, providers); 393b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate } 394b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate } 395b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate 396b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate private void propagateApplicationInfo(ApplicationInfo appInfo, ComponentInfo[] components) { 397b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate if (components != null) { 398b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate for (ComponentInfo ci : components) { 399b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate ci.applicationInfo = appInfo; 400b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate } 401b91167620904eb439d0e8c09eab532fe7524ff6dChristopher Tate } 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 404