1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.content.pm;
import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import com.android.internal.content.PackageHelper;
/**
* Basic information about a package as specified in its manifest.
* Utility class used in PackageManager methods
* @hide
*/
public class PackageInfoLite implements Parcelable {
/**
* The name of this package. From the <manifest> tag's "name"
* attribute.
*/
public String packageName;
/** Names of any split APKs, ordered by parsed splitName */
public String[] splitNames;
/**
* The android:versionCode of the package.
* @deprecated Use {@link #getLongVersionCode()} instead, which includes both
* this and the additional
* {@link android.R.styleable#AndroidManifest_versionCode versionCodeMajor} attribute.
*/
@Deprecated
public int versionCode;
/**
* @hide
* The android:versionCodeMajor of the package.
*/
public int versionCodeMajor;
/**
* Return {@link #versionCode} and {@link #versionCodeMajor} combined together as a
* single long value. The {@link #versionCodeMajor} is placed in the upper 32 bits.
*/
public long getLongVersionCode() {
return PackageInfo.composeLongVersionCode(versionCodeMajor, versionCode);
}
/** Revision code of base APK */
public int baseRevisionCode;
/** Revision codes of any split APKs, ordered by parsed splitName */
public int[] splitRevisionCodes;
/**
* The android:multiArch flag from the package manifest. If set,
* we will extract all native libraries for the given app, not just those
* from the preferred ABI.
*/
public boolean multiArch;
/**
* Specifies the recommended install location. Can be one of
* {@link PackageHelper#RECOMMEND_INSTALL_INTERNAL} to install on internal storage,
* {@link PackageHelper#RECOMMEND_INSTALL_EXTERNAL} to install on external media,
* {@link PackageHelper#RECOMMEND_FAILED_INSUFFICIENT_STORAGE} for storage errors,
* or {@link PackageHelper#RECOMMEND_FAILED_INVALID_APK} for parse errors.
*/
public int recommendedInstallLocation;
public int installLocation;
public VerifierInfo[] verifiers;
public PackageInfoLite() {
}
public String toString() {
return "PackageInfoLite{"
+ Integer.toHexString(System.identityHashCode(this))
+ " " + packageName + "}";
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int parcelableFlags) {
dest.writeString(packageName);
dest.writeStringArray(splitNames);
dest.writeInt(versionCode);
dest.writeInt(versionCodeMajor);
dest.writeInt(baseRevisionCode);
dest.writeIntArray(splitRevisionCodes);
dest.writeInt(recommendedInstallLocation);
dest.writeInt(installLocation);
dest.writeInt(multiArch ? 1 : 0);
if (verifiers == null || verifiers.length == 0) {
dest.writeInt(0);
} else {
dest.writeInt(verifiers.length);
dest.writeTypedArray(verifiers, parcelableFlags);
}
}
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public static final @android.annotation.NonNull Parcelable.Creator<PackageInfoLite> CREATOR
= new Parcelable.Creator<PackageInfoLite>() {
public PackageInfoLite createFromParcel(Parcel source) {
return new PackageInfoLite(source);
}
public PackageInfoLite[] newArray(int size) {
return new PackageInfoLite[size];
}
};
private PackageInfoLite(Parcel source) {
packageName = source.readString();
splitNames = source.createStringArray();
versionCode = source.readInt();
versionCodeMajor = source.readInt();
baseRevisionCode = source.readInt();
splitRevisionCodes = source.createIntArray();
recommendedInstallLocation = source.readInt();
installLocation = source.readInt();
multiArch = (source.readInt() != 0);
final int verifiersLength = source.readInt();
if (verifiersLength == 0) {
verifiers = new VerifierInfo[0];
} else {
verifiers = new VerifierInfo[verifiersLength];
source.readTypedArray(verifiers, VerifierInfo.CREATOR);
}
}
}
|