Loading api/current.txt +5 −5 Original line number Diff line number Diff line Loading @@ -11825,15 +11825,15 @@ package android.content.pm { } public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { ctor public PermissionGroupInfo(); ctor public PermissionGroupInfo(android.content.pm.PermissionGroupInfo); ctor @Deprecated public PermissionGroupInfo(); ctor @Deprecated public PermissionGroupInfo(@NonNull android.content.pm.PermissionGroupInfo); method public int describeContents(); method public CharSequence loadDescription(android.content.pm.PackageManager); method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager); field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionGroupInfo> CREATOR; field public static final int FLAG_PERSONAL_INFO = 1; // 0x1 field public int descriptionRes; field @StringRes public int descriptionRes; field public int flags; field public CharSequence nonLocalizedDescription; field @Nullable public CharSequence nonLocalizedDescription; field public int priority; } api/system-current.txt +3 −3 Original line number Diff line number Diff line Loading @@ -1709,9 +1709,9 @@ package android.content.pm { } public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { field @StringRes public int backgroundRequestDetailResourceId; field @StringRes public int backgroundRequestResourceId; field @StringRes public int requestDetailResourceId; field @StringRes public final int backgroundRequestDetailResourceId; field @StringRes public final int backgroundRequestResourceId; field @StringRes public final int requestDetailResourceId; field @StringRes public int requestRes; } Loading core/java/android/content/pm/PackageParser.java +20 −13 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringRes; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; import android.app.ActivityTaskManager; Loading Loading @@ -3260,10 +3261,21 @@ public class PackageParser { private boolean parsePermissionGroup(Package owner, int flags, Resources res, XmlResourceParser parser, String[] outError) throws XmlPullParserException, IOException { PermissionGroup perm = new PermissionGroup(owner); TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestPermissionGroup); int requestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_requestDetail, 0); int backgroundRequestResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_backgroundRequest, 0); int backgroundRequestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable .AndroidManifestPermissionGroup_backgroundRequestDetail, 0); PermissionGroup perm = new PermissionGroup(owner, requestDetailResourceId, backgroundRequestResourceId, backgroundRequestDetailResourceId); if (!parsePackageItemInfo(owner, perm.info, outError, "<permission-group>", sa, true /*nameRequired*/, com.android.internal.R.styleable.AndroidManifestPermissionGroup_name, Loading @@ -3282,14 +3294,6 @@ public class PackageParser { 0); perm.info.requestRes = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_request, 0); perm.info.requestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_requestDetail, 0); perm.info.backgroundRequestResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_backgroundRequest, 0); perm.info.backgroundRequestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable .AndroidManifestPermissionGroup_backgroundRequestDetail, 0); perm.info.flags = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); perm.info.priority = sa.getInt( Loading Loading @@ -7676,9 +7680,12 @@ public class PackageParser { @UnsupportedAppUsage public final PermissionGroupInfo info; public PermissionGroup(Package _owner) { super(_owner); info = new PermissionGroupInfo(); public PermissionGroup(Package owner, @StringRes int requestDetailResourceId, @StringRes int backgroundRequestResourceId, @StringRes int backgroundRequestDetailResourceId) { super(owner); info = new PermissionGroupInfo(requestDetailResourceId, backgroundRequestResourceId, backgroundRequestDetailResourceId); } public PermissionGroup(Package _owner, PermissionGroupInfo _info) { Loading core/java/android/content/pm/PermissionGroupInfo.java +44 −9 Original line number Diff line number Diff line Loading @@ -16,12 +16,20 @@ package android.content.pm; import static android.content.res.Resources.ID_NULL; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringRes; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * Information you can retrieve about a particular security permission * group known to the system. This corresponds to information collected from the Loading @@ -33,7 +41,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * permission's description. From the "description" attribute or, * if not set, 0. */ public int descriptionRes; public @StringRes int descriptionRes; /** * A string resource identifier (in the package's resources) used to request the permissions. Loading @@ -54,7 +62,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @hide */ @SystemApi public @StringRes int requestDetailResourceId; public final @StringRes int requestDetailResourceId; /** * A string resource identifier (in the package's resources) used when requesting background Loading @@ -66,7 +74,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @hide */ @SystemApi public @StringRes int backgroundRequestResourceId; public final @StringRes int backgroundRequestResourceId; /** * A string resource identifier (in the package's resources) used as subtitle when requesting Loading @@ -78,7 +86,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @hide */ @SystemApi public @StringRes int backgroundRequestDetailResourceId; public final @StringRes int backgroundRequestDetailResourceId; /** * The description string provided in the AndroidManifest file, if any. You Loading @@ -86,7 +94,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * is in a resource. You probably want * {@link PermissionInfo#loadDescription} instead. */ public CharSequence nonLocalizedDescription; public @Nullable CharSequence nonLocalizedDescription; /** * Flag for {@link #flags}, corresponding to <code>personalInfo</code> Loading @@ -94,21 +102,48 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { */ public static final int FLAG_PERSONAL_INFO = 1<<0; /** @hide */ @IntDef(flag = true, prefix = { "FLAG_" }, value = { FLAG_PERSONAL_INFO, }) @Retention(RetentionPolicy.SOURCE) public @interface Flags {} /** * Additional flags about this group as given by * {@link android.R.attr#permissionGroupFlags}. */ public int flags; public @Flags int flags; /** * Prioritization of this group, for visually sorting with other groups. */ public int priority; /** * @hide */ public PermissionGroupInfo(@StringRes int requestDetailResourceId, @StringRes int backgroundRequestResourceId, @StringRes int backgroundRequestDetailResourceId) { this.requestDetailResourceId = requestDetailResourceId; this.backgroundRequestResourceId = backgroundRequestResourceId; this.backgroundRequestDetailResourceId = backgroundRequestDetailResourceId; } /** * @deprecated Should only be created by the system. */ @Deprecated public PermissionGroupInfo() { this(ID_NULL, ID_NULL, ID_NULL); } public PermissionGroupInfo(PermissionGroupInfo orig) { /** * @deprecated Should only be created by the system. */ @Deprecated public PermissionGroupInfo(@NonNull PermissionGroupInfo orig) { super(orig); descriptionRes = orig.descriptionRes; requestRes = orig.requestRes; Loading @@ -131,7 +166,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @return Returns a CharSequence containing the permission's description. * If there is no description, null is returned. */ public CharSequence loadDescription(PackageManager pm) { public @Nullable CharSequence loadDescription(@NonNull PackageManager pm) { if (nonLocalizedDescription != null) { return nonLocalizedDescription; } Loading Loading @@ -166,7 +201,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { dest.writeInt(priority); } public static final @android.annotation.NonNull Creator<PermissionGroupInfo> CREATOR = public static final @NonNull Creator<PermissionGroupInfo> CREATOR = new Creator<PermissionGroupInfo>() { public PermissionGroupInfo createFromParcel(Parcel source) { return new PermissionGroupInfo(source); Loading services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.server.pm; import static android.content.res.Resources.ID_NULL; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; Loading Loading @@ -454,7 +456,7 @@ public class PackageParserTest { pkg.applicationInfo = new ApplicationInfo(); pkg.permissions.add(new PackageParser.Permission(pkg)); pkg.permissionGroups.add(new PackageParser.PermissionGroup(pkg)); pkg.permissionGroups.add(new PackageParser.PermissionGroup(pkg, ID_NULL, ID_NULL, ID_NULL)); final PackageParser.ParseComponentArgs dummy = new PackageParser.ParseComponentArgs( pkg, new String[1], 0, 0, 0, 0, 0, 0, null, 0, 0, 0); Loading Loading
api/current.txt +5 −5 Original line number Diff line number Diff line Loading @@ -11825,15 +11825,15 @@ package android.content.pm { } public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { ctor public PermissionGroupInfo(); ctor public PermissionGroupInfo(android.content.pm.PermissionGroupInfo); ctor @Deprecated public PermissionGroupInfo(); ctor @Deprecated public PermissionGroupInfo(@NonNull android.content.pm.PermissionGroupInfo); method public int describeContents(); method public CharSequence loadDescription(android.content.pm.PackageManager); method @Nullable public CharSequence loadDescription(@NonNull android.content.pm.PackageManager); field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.PermissionGroupInfo> CREATOR; field public static final int FLAG_PERSONAL_INFO = 1; // 0x1 field public int descriptionRes; field @StringRes public int descriptionRes; field public int flags; field public CharSequence nonLocalizedDescription; field @Nullable public CharSequence nonLocalizedDescription; field public int priority; }
api/system-current.txt +3 −3 Original line number Diff line number Diff line Loading @@ -1709,9 +1709,9 @@ package android.content.pm { } public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { field @StringRes public int backgroundRequestDetailResourceId; field @StringRes public int backgroundRequestResourceId; field @StringRes public int requestDetailResourceId; field @StringRes public final int backgroundRequestDetailResourceId; field @StringRes public final int backgroundRequestResourceId; field @StringRes public final int requestDetailResourceId; field @StringRes public int requestRes; } Loading
core/java/android/content/pm/PackageParser.java +20 −13 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringRes; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; import android.app.ActivityTaskManager; Loading Loading @@ -3260,10 +3261,21 @@ public class PackageParser { private boolean parsePermissionGroup(Package owner, int flags, Resources res, XmlResourceParser parser, String[] outError) throws XmlPullParserException, IOException { PermissionGroup perm = new PermissionGroup(owner); TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestPermissionGroup); int requestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_requestDetail, 0); int backgroundRequestResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_backgroundRequest, 0); int backgroundRequestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable .AndroidManifestPermissionGroup_backgroundRequestDetail, 0); PermissionGroup perm = new PermissionGroup(owner, requestDetailResourceId, backgroundRequestResourceId, backgroundRequestDetailResourceId); if (!parsePackageItemInfo(owner, perm.info, outError, "<permission-group>", sa, true /*nameRequired*/, com.android.internal.R.styleable.AndroidManifestPermissionGroup_name, Loading @@ -3282,14 +3294,6 @@ public class PackageParser { 0); perm.info.requestRes = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_request, 0); perm.info.requestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_requestDetail, 0); perm.info.backgroundRequestResourceId = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_backgroundRequest, 0); perm.info.backgroundRequestDetailResourceId = sa.getResourceId( com.android.internal.R.styleable .AndroidManifestPermissionGroup_backgroundRequestDetail, 0); perm.info.flags = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); perm.info.priority = sa.getInt( Loading Loading @@ -7676,9 +7680,12 @@ public class PackageParser { @UnsupportedAppUsage public final PermissionGroupInfo info; public PermissionGroup(Package _owner) { super(_owner); info = new PermissionGroupInfo(); public PermissionGroup(Package owner, @StringRes int requestDetailResourceId, @StringRes int backgroundRequestResourceId, @StringRes int backgroundRequestDetailResourceId) { super(owner); info = new PermissionGroupInfo(requestDetailResourceId, backgroundRequestResourceId, backgroundRequestDetailResourceId); } public PermissionGroup(Package _owner, PermissionGroupInfo _info) { Loading
core/java/android/content/pm/PermissionGroupInfo.java +44 −9 Original line number Diff line number Diff line Loading @@ -16,12 +16,20 @@ package android.content.pm; import static android.content.res.Resources.ID_NULL; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.StringRes; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * Information you can retrieve about a particular security permission * group known to the system. This corresponds to information collected from the Loading @@ -33,7 +41,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * permission's description. From the "description" attribute or, * if not set, 0. */ public int descriptionRes; public @StringRes int descriptionRes; /** * A string resource identifier (in the package's resources) used to request the permissions. Loading @@ -54,7 +62,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @hide */ @SystemApi public @StringRes int requestDetailResourceId; public final @StringRes int requestDetailResourceId; /** * A string resource identifier (in the package's resources) used when requesting background Loading @@ -66,7 +74,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @hide */ @SystemApi public @StringRes int backgroundRequestResourceId; public final @StringRes int backgroundRequestResourceId; /** * A string resource identifier (in the package's resources) used as subtitle when requesting Loading @@ -78,7 +86,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @hide */ @SystemApi public @StringRes int backgroundRequestDetailResourceId; public final @StringRes int backgroundRequestDetailResourceId; /** * The description string provided in the AndroidManifest file, if any. You Loading @@ -86,7 +94,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * is in a resource. You probably want * {@link PermissionInfo#loadDescription} instead. */ public CharSequence nonLocalizedDescription; public @Nullable CharSequence nonLocalizedDescription; /** * Flag for {@link #flags}, corresponding to <code>personalInfo</code> Loading @@ -94,21 +102,48 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { */ public static final int FLAG_PERSONAL_INFO = 1<<0; /** @hide */ @IntDef(flag = true, prefix = { "FLAG_" }, value = { FLAG_PERSONAL_INFO, }) @Retention(RetentionPolicy.SOURCE) public @interface Flags {} /** * Additional flags about this group as given by * {@link android.R.attr#permissionGroupFlags}. */ public int flags; public @Flags int flags; /** * Prioritization of this group, for visually sorting with other groups. */ public int priority; /** * @hide */ public PermissionGroupInfo(@StringRes int requestDetailResourceId, @StringRes int backgroundRequestResourceId, @StringRes int backgroundRequestDetailResourceId) { this.requestDetailResourceId = requestDetailResourceId; this.backgroundRequestResourceId = backgroundRequestResourceId; this.backgroundRequestDetailResourceId = backgroundRequestDetailResourceId; } /** * @deprecated Should only be created by the system. */ @Deprecated public PermissionGroupInfo() { this(ID_NULL, ID_NULL, ID_NULL); } public PermissionGroupInfo(PermissionGroupInfo orig) { /** * @deprecated Should only be created by the system. */ @Deprecated public PermissionGroupInfo(@NonNull PermissionGroupInfo orig) { super(orig); descriptionRes = orig.descriptionRes; requestRes = orig.requestRes; Loading @@ -131,7 +166,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { * @return Returns a CharSequence containing the permission's description. * If there is no description, null is returned. */ public CharSequence loadDescription(PackageManager pm) { public @Nullable CharSequence loadDescription(@NonNull PackageManager pm) { if (nonLocalizedDescription != null) { return nonLocalizedDescription; } Loading Loading @@ -166,7 +201,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { dest.writeInt(priority); } public static final @android.annotation.NonNull Creator<PermissionGroupInfo> CREATOR = public static final @NonNull Creator<PermissionGroupInfo> CREATOR = new Creator<PermissionGroupInfo>() { public PermissionGroupInfo createFromParcel(Parcel source) { return new PermissionGroupInfo(source); Loading
services/tests/servicestests/src/com/android/server/pm/PackageParserTest.java +3 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ */ package com.android.server.pm; import static android.content.res.Resources.ID_NULL; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; Loading Loading @@ -454,7 +456,7 @@ public class PackageParserTest { pkg.applicationInfo = new ApplicationInfo(); pkg.permissions.add(new PackageParser.Permission(pkg)); pkg.permissionGroups.add(new PackageParser.PermissionGroup(pkg)); pkg.permissionGroups.add(new PackageParser.PermissionGroup(pkg, ID_NULL, ID_NULL, ID_NULL)); final PackageParser.ParseComponentArgs dummy = new PackageParser.ParseComponentArgs( pkg, new String[1], 0, 0, 0, 0, 0, 0, null, 0, 0, 0); Loading