diff options
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/content/pm/PackageParser.java | 8 | ||||
| -rw-r--r-- | core/java/android/content/pm/SharedLibraryInfo.java | 37 |
2 files changed, 42 insertions, 3 deletions
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 7b076f6881cc..7aea261a48f1 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -6317,6 +6317,7 @@ public class PackageParser { public ArrayList<String> usesOptionalLibraries = null; @UnsupportedAppUsage public String[] usesLibraryFiles = null; + public ArrayList<SharedLibraryInfo> usesLibraryInfos = null; public ArrayList<ActivityIntentInfo> preferredActivityFilters = null; @@ -6846,6 +6847,8 @@ public class PackageParser { internStringArrayList(usesOptionalLibraries); usesLibraryFiles = dest.readStringArray(); + usesLibraryInfos = dest.createTypedArrayList(SharedLibraryInfo.CREATOR); + final int libCount = dest.readInt(); if (libCount > 0) { usesStaticLibraries = new ArrayList<>(libCount); @@ -6996,6 +6999,7 @@ public class PackageParser { dest.writeStringList(usesLibraries); dest.writeStringList(usesOptionalLibraries); dest.writeStringArray(usesLibraryFiles); + dest.writeTypedList(usesLibraryInfos); if (ArrayUtils.isEmpty(usesStaticLibraries)) { dest.writeInt(-1); @@ -7456,6 +7460,10 @@ public class PackageParser { && p.usesLibraryFiles != null) { return true; } + if ((flags & PackageManager.GET_SHARED_LIBRARY_FILES) != 0 + && p.usesLibraryInfos != null) { + return true; + } if (p.staticSharedLibName != null) { return true; } diff --git a/core/java/android/content/pm/SharedLibraryInfo.java b/core/java/android/content/pm/SharedLibraryInfo.java index 33bc9515409f..a8bbeab03f0a 100644 --- a/core/java/android/content/pm/SharedLibraryInfo.java +++ b/core/java/android/content/pm/SharedLibraryInfo.java @@ -19,6 +19,7 @@ package android.content.pm; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; +import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; @@ -69,6 +70,8 @@ public final class SharedLibraryInfo implements Parcelable { */ public static final int VERSION_UNDEFINED = -1; + private final String mPath; + private final String mPackageName; private final String mName; private final long mVersion; @@ -87,8 +90,10 @@ public final class SharedLibraryInfo implements Parcelable { * * @hide */ - public SharedLibraryInfo(String name, long version, int type, + public SharedLibraryInfo(String path, String packageName, String name, long version, int type, VersionedPackage declaringPackage, List<VersionedPackage> dependentPackages) { + mPath = path; + mPackageName = packageName; mName = name; mVersion = version; mType = type; @@ -97,8 +102,8 @@ public final class SharedLibraryInfo implements Parcelable { } private SharedLibraryInfo(Parcel parcel) { - this(parcel.readString(), parcel.readLong(), parcel.readInt(), - parcel.readParcelable(null), parcel.readArrayList(null)); + this(parcel.readString(), parcel.readString(), parcel.readString(), parcel.readLong(), + parcel.readInt(), parcel.readParcelable(null), parcel.readArrayList(null)); } /** @@ -121,6 +126,30 @@ public final class SharedLibraryInfo implements Parcelable { } /** + * If the shared library is a jar file, returns the path of that jar. Null otherwise. + * Only libraries with TYPE_BUILTIN are in jar files. + * + * @return The path. + * + * @hide + */ + public @Nullable String getPath() { + return mPath; + } + + /** + * If the shared library is an apk, returns the package name. Null otherwise. + * Only libraries with TYPE_DYNAMIC or TYPE_STATIC are in apks. + * + * @return The package name. + * + * @hide + */ + public @Nullable String getPackageName() { + return mPackageName; + } + + /** * @deprecated Use {@link #getLongVersion()} instead. */ @Deprecated @@ -196,6 +225,8 @@ public final class SharedLibraryInfo implements Parcelable { @Override public void writeToParcel(Parcel parcel, int flags) { + parcel.writeString(mPath); + parcel.writeString(mPackageName); parcel.writeString(mName); parcel.writeLong(mVersion); parcel.writeInt(mType); |
