diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index c1e6a4d0397b2..bdbed7551cae8 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -1487,7 +1487,11 @@ public class PackageParser { return null; } } else if (tagName.equals("uses-permission")) { - if (!parseUsesPermission(pkg, res, parser, attrs, outError)) { + if (!parseUsesPermission(pkg, res, parser, attrs)) { + return null; + } + } else if (tagName.equals("uses-permission-sdk-m")) { + if (!parseUsesPermission(pkg, res, parser, attrs)) { return null; } } else if (tagName.equals("uses-configuration")) { @@ -1887,8 +1891,7 @@ public class PackageParser { } private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser, - AttributeSet attrs, String[] outError) - throws XmlPullParserException, IOException { + AttributeSet attrs) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(attrs, com.android.internal.R.styleable.AndroidManifestUsesPermission); @@ -1914,8 +1917,9 @@ public class PackageParser { if (index == -1) { pkg.requestedPermissions.add(name.intern()); } else { - Slog.w(TAG, "Ignoring duplicate uses-permission: " + name + " in package: " - + pkg.packageName + " at: " + parser.getPositionDescription()); + Slog.w(TAG, "Ignoring duplicate uses-permissions/uses-permissions-sdk-m: " + + name + " in package: " + pkg.packageName + " at: " + + parser.getPositionDescription()); } } } diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index b0b4e3aa1f6be..5ffe57e439af9 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1269,8 +1269,13 @@ -