diff --git a/core/api/current.txt b/core/api/current.txt index 8bf9edc3f8fe2..e4e5a1acc420e 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -1291,6 +1291,7 @@ package android { field public static final int shareInterpolator = 16843195; // 0x10101bb field @Deprecated public static final int sharedUserId = 16842763; // 0x101000b field @Deprecated public static final int sharedUserLabel = 16843361; // 0x1010261 + field public static final int sharedUserMaxSdkVersion; field public static final int shell = 16844180; // 0x1010594 field public static final int shortcutDisabledMessage = 16844075; // 0x101052b field public static final int shortcutId = 16844072; // 0x1010528 diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index 809a544039f9c..80befcdf02de5 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -996,6 +996,11 @@ public class ParsingPackageUtils { private static ParseResult parseSharedUser(ParseInput input, ParsingPackage pkg, TypedArray sa) { + int maxSdkVersion = anInteger(0, R.styleable.AndroidManifest_sharedUserMaxSdkVersion, sa); + if ((maxSdkVersion != 0) && maxSdkVersion < Build.VERSION.RESOURCES_SDK_INT) { + return input.success(pkg); + } + String str = nonConfigString(0, R.styleable.AndroidManifest_sharedUserId, sa); if (TextUtils.isEmpty(str)) { return input.success(pkg); diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 73dfab683d486..cbf35f4a080d9 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -395,6 +395,12 @@ this attribute unnecessary. --> + + +