115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2007 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content.pm; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Overall information about the contents of a package. This corresponds 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to all of the information collected from AndroidManifest.xml. 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class PackageInfo implements Parcelable { 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The name of this package. From the <manifest> tag's "name" 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String packageName; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The version number of this package, as specified by the <manifest> 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_versionCode versionCode} 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int versionCode; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The version name of this package, as specified by the <manifest> 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_versionName versionName} 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String versionName; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The shared user ID name of this package, as specified by the <manifest> 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_sharedUserId sharedUserId} 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String sharedUserId; 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The shared user ID label of this package, as specified by the <manifest> 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * tag's {@link android.R.styleable#AndroidManifest_sharedUserLabel sharedUserLabel} 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * attribute. 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int sharedUserLabel; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information collected from the <application> tag, or null if 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * there was none. 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ApplicationInfo applicationInfo; 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6878d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * The time at which the app was first installed. Units are as 6978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * per {@link System#currentTimeMillis()}. 7078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn */ 7178d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn public long firstInstallTime; 7278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn 7378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn /** 7478d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * The time at which the app was last updated. Units are as 7578d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn * per {@link System#currentTimeMillis()}. 7678d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn */ 7778d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn public long lastUpdateTime; 7878d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn 7978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn /** 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * All kernel group-IDs that have been assigned to this package. 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is only filled in if the flag {@link PackageManager#GET_GIDS} was set. 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int[] gids; 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestActivity 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <activity>} tags included under <application>, 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_ACTIVITIES} was set. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ActivityInfo[] activities; 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestReceiver 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <receiver>} tags included under <application>, 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_RECEIVERS} was set. 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ActivityInfo[] receivers; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestService 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <service>} tags included under <application>, 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_SERVICES} was set. 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ServiceInfo[] services; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestProvider 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <provider>} tags included under <application>, 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PROVIDERS} was set. 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ProviderInfo[] providers; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestInstrumentation 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <instrumentation>} tags included under <manifest>, 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_INSTRUMENTATION} was set. 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public InstrumentationInfo[] instrumentation; 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestPermission 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <permission>} tags included under <manifest>, 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PERMISSIONS} was set. 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PermissionInfo[] permissions; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all {@link android.R.styleable#AndroidManifestUsesPermission 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <uses-permission>} tags included under <manifest>, 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_PERMISSIONS} was set. This list includes 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * all permissions requested, even those that were not granted or known 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * by the system at install time. 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String[] requestedPermissions; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Array of all signatures read from the package file. This is only filled 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * in if the flag {@link PackageManager#GET_SIGNATURES} was set. 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Signature[] signatures; 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Application specified preferred configuration 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.R.styleable#AndroidManifestUsesConfiguration 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <uses-configuration>} tags included under <manifest>, 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * or null if there were none. This is only filled in if the flag 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link PackageManager#GET_CONFIGURATIONS} was set. 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo[] configPreferences; 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15849237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn /** 15949237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn * The features that this application has said it requires. 16049237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn */ 16149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn public FeatureInfo[] reqFeatures; 162117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu 163117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 164117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * Constant corresponding to <code>auto</code> in 165117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * the {@link android.R.attr#installLocation} attribute. 166117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * @hide 167117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 16890d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu public static final int INSTALL_LOCATION_UNSPECIFIED = -1; 16990d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu /** 17090d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu * Constant corresponding to <code>auto</code> in 17190d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu * the {@link android.R.attr#installLocation} attribute. 17290d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu * @hide 17390d8ee650be988d8479f4f14ae8e541bb4cb034bSuchi Amalapurapu */ 174117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_AUTO = 0; 175117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 176117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * Constant corresponding to <code>internalOnly</code> in 177117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * the {@link android.R.attr#installLocation} attribute. 178117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * @hide 179117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 180117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_INTERNAL_ONLY = 1; 181117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 182117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * Constant corresponding to <code>preferExternal</code> in 183117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * the {@link android.R.attr#installLocation} attribute. 184117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * @hide 185117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 186117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public static final int INSTALL_LOCATION_PREFER_EXTERNAL = 2; 187117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu /** 188a2b6c3775ed6b8924232d6a01bae4a19740a15f8Suchi Amalapurapu * The install location requested by the activity. From the 189117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link android.R.attr#installLocation} attribute, one of 190117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link #INSTALL_LOCATION_AUTO}, 191117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link #INSTALL_LOCATION_INTERNAL_ONLY}, 192117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * {@link #INSTALL_LOCATION_PREFER_EXTERNAL} 193117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu * @hide 194117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu */ 195117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu public int installLocation = INSTALL_LOCATION_INTERNAL_ONLY; 19649237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo() { 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "PackageInfo{" 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + Integer.toHexString(System.identityHashCode(this)) 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + " " + packageName + "}"; 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int parcelableFlags) { 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(packageName); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(versionCode); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(versionName); 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(sharedUserId); 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(sharedUserLabel); 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (applicationInfo != null) { 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo.writeToParcel(dest, parcelableFlags); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 22278d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn dest.writeLong(firstInstallTime); 22378d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn dest.writeLong(lastUpdateTime); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeIntArray(gids); 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(activities, parcelableFlags); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(receivers, parcelableFlags); 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(services, parcelableFlags); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(providers, parcelableFlags); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(instrumentation, parcelableFlags); 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(permissions, parcelableFlags); 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeStringArray(requestedPermissions); 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(signatures, parcelableFlags); 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeTypedArray(configPreferences, parcelableFlags); 23449237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn dest.writeTypedArray(reqFeatures, parcelableFlags); 235117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu dest.writeInt(installLocation); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<PackageInfo> CREATOR 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<PackageInfo>() { 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo createFromParcel(Parcel source) { 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo(source); 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public PackageInfo[] newArray(int size) { 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new PackageInfo[size]; 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private PackageInfo(Parcel source) { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project packageName = source.readString(); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionCode = source.readInt(); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project versionName = source.readString(); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserId = source.readString(); 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project sharedUserLabel = source.readInt(); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int hasApp = source.readInt(); 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (hasApp != 0) { 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project applicationInfo = ApplicationInfo.CREATOR.createFromParcel(source); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 25978d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn firstInstallTime = source.readLong(); 26078d688369a2240009d3bbe4126996a973b2e2fe2Dianne Hackborn lastUpdateTime = source.readLong(); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gids = source.createIntArray(); 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project activities = source.createTypedArray(ActivityInfo.CREATOR); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project receivers = source.createTypedArray(ActivityInfo.CREATOR); 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project services = source.createTypedArray(ServiceInfo.CREATOR); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project providers = source.createTypedArray(ProviderInfo.CREATOR); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project instrumentation = source.createTypedArray(InstrumentationInfo.CREATOR); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project permissions = source.createTypedArray(PermissionInfo.CREATOR); 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project requestedPermissions = source.createStringArray(); 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project signatures = source.createTypedArray(Signature.CREATOR); 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); 27149237345d83e62fdb9eb8d50b13ad086636a04faDianne Hackborn reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); 272117818e4f171b1fd9daa05349c48f61388f04567Suchi Amalapurapu installLocation = source.readInt(); 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 275