Loading api/current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ package android { field public static final java.lang.String READ_SOCIAL_STREAM = "android.permission.READ_SOCIAL_STREAM"; field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS"; field public static final java.lang.String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS"; field public static final java.lang.String READ_USER_DICTIONARY = "android.permission.READ_USER_DICTIONARY"; field public static final java.lang.String REBOOT = "android.permission.REBOOT"; field public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED"; field public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS"; Loading Loading @@ -134,6 +135,7 @@ package android { field public static final java.lang.String WRITE_SMS = "android.permission.WRITE_SMS"; field public static final java.lang.String WRITE_SOCIAL_STREAM = "android.permission.WRITE_SOCIAL_STREAM"; field public static final java.lang.String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS"; field public static final java.lang.String WRITE_USER_DICTIONARY = "android.permission.WRITE_USER_DICTIONARY"; } public static final class Manifest.permission_group { Loading Loading @@ -738,6 +740,7 @@ package android { field public static final int pathPrefix = 16842795; // 0x101002b field public static final int permission = 16842758; // 0x1010006 field public static final int permissionGroup = 16842762; // 0x101000a field public static final int permissionGroupFlags = 16843700; // 0x10103b4 field public static final int persistent = 16842765; // 0x101000d field public static final int persistentDrawingCache = 16842990; // 0x10100ee field public static final deprecated int phoneNumber = 16843111; // 0x1010167 Loading Loading @@ -6577,8 +6580,11 @@ package android.content.pm { method public int describeContents(); method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager); field public static final android.os.Parcelable.Creator CREATOR; field public static final int FLAG_PERSONAL_INFO = 1; // 0x1 field public int descriptionRes; field public int flags; field public java.lang.CharSequence nonLocalizedDescription; field public int priority; } public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { core/java/android/content/pm/PackageParser.java +9 −2 Original line number Diff line number Diff line Loading @@ -970,7 +970,7 @@ public class PackageParser { return null; } } else if (tagName.equals("permission-group")) { if (parsePermissionGroup(pkg, res, parser, attrs, outError) == null) { if (parsePermissionGroup(pkg, flags, res, parser, attrs, outError) == null) { return null; } } else if (tagName.equals("permission")) { Loading Loading @@ -1432,7 +1432,7 @@ public class PackageParser { return buildCompoundName(pkg, procSeq, "taskAffinity", outError); } private PermissionGroup parsePermissionGroup(Package owner, Resources res, private PermissionGroup parsePermissionGroup(Package owner, int flags, Resources res, XmlPullParser parser, AttributeSet attrs, String[] outError) throws XmlPullParserException, IOException { PermissionGroup perm = new PermissionGroup(owner); Loading @@ -1454,6 +1454,13 @@ public class PackageParser { perm.info.descriptionRes = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_description, 0); perm.info.flags = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); perm.info.priority = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0); if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) != 0) { perm.info.priority = 0; } sa.recycle(); Loading core/java/android/content/pm/PermissionGroupInfo.java +24 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,23 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { */ public CharSequence nonLocalizedDescription; /** * Flag for {@link #flags}, corresponding to <code>personalInfo</code> * value of {@link android.R.attr#permissionGroupFlags}. */ public static final int FLAG_PERSONAL_INFO = 1<<0; /** * Additional flags about this group as given by * {@link android.R.attr#permissionGroupFlags}. */ public int flags; /** * Prioritization of this group, for visually sorting with other groups. */ public int priority; public PermissionGroupInfo() { } Loading @@ -48,6 +65,8 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super(orig); descriptionRes = orig.descriptionRes; nonLocalizedDescription = orig.nonLocalizedDescription; flags = orig.flags; priority = orig.priority; } /** Loading Loading @@ -77,7 +96,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { public String toString() { return "PermissionGroupInfo{" + Integer.toHexString(System.identityHashCode(this)) + " " + name + "}"; + " " + name + " flgs=0x" + Integer.toHexString(flags) + "}"; } public int describeContents() { Loading @@ -88,6 +107,8 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super.writeToParcel(dest, parcelableFlags); dest.writeInt(descriptionRes); TextUtils.writeToParcel(nonLocalizedDescription, dest, parcelableFlags); dest.writeInt(flags); dest.writeInt(priority); } public static final Creator<PermissionGroupInfo> CREATOR = Loading @@ -104,5 +125,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super(source); descriptionRes = source.readInt(); nonLocalizedDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); flags = source.readInt(); priority = source.readInt(); } } core/res/AndroidManifest.xml +6 −7 Original line number Diff line number Diff line Loading @@ -258,7 +258,8 @@ expressed as two distinct permissions). --> <permission-group android:name="android.permission-group.PERSONAL_INFO" android:label="@string/permgrouplab_personalInfo" android:description="@string/permgroupdesc_personalInfo" /> android:description="@string/permgroupdesc_personalInfo" android:permissionGroupFlags="personalInfo" /> <!-- Allows an application to read the user's contacts data. --> <permission android:name="android.permission.READ_CONTACTS" Loading Loading @@ -338,16 +339,14 @@ <!-- Allows an application to read the user dictionary. This should really only be required by an IME, or a dictionary editor like the Settings app. @hide Pending API council approval --> the Settings app. --> <permission android:name="android.permission.READ_USER_DICTIONARY" android:permissionGroup="android.permission-group.PERSONAL_INFO" android:protectionLevel="dangerous" android:label="@string/permlab_readDictionary" android:description="@string/permdesc_readDictionary" /> <!-- Allows an application to write to the user dictionary. @hide Pending API council approval --> <!-- Allows an application to write to the user dictionary. --> <permission android:name="android.permission.WRITE_USER_DICTIONARY" android:permissionGroup="android.permission-group.PERSONAL_INFO" android:protectionLevel="normal" Loading Loading @@ -793,7 +792,7 @@ as locale. --> <permission android:name="android.permission.CHANGE_CONFIGURATION" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="dangerous" android:protectionLevel="signature|system|development" android:label="@string/permlab_changeConfiguration" android:description="@string/permdesc_changeConfiguration" /> Loading Loading @@ -844,7 +843,7 @@ <!-- Modify the global animation scaling factor. --> <permission android:name="android.permission.SET_ANIMATION_SCALE" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="dangerous" android:protectionLevel="signature|system|development" android:label="@string/permlab_setAnimationScale" android:description="@string/permdesc_setAnimationScale" /> Loading core/res/res/values/attrs_manifest.xml +11 −1 Original line number Diff line number Diff line Loading @@ -199,6 +199,14 @@ <flag name="development" value="0x20" /> </attr> <!-- Flags indicating more context for a permission group. --> <attr name="permissionGroupFlags"> <!-- Set to indicate that this permission group contains permissions protecting access to some information that is considered personal to the user (such as contacts, e-mails, etc). --> <flag name="personalInfo" value="0x0001" /> </attr> <!-- Specified the name of a group that this permission is associated with. The group must have been defined with the {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. --> Loading Loading @@ -895,6 +903,8 @@ <attr name="icon" /> <attr name="logo" /> <attr name="description" /> <attr name="permissionGroupFlags" /> <attr name="priority" /> </declare-styleable> <!-- The <code>permission-tree</code> tag declares the base of a tree of Loading Loading
api/current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,7 @@ package android { field public static final java.lang.String READ_SOCIAL_STREAM = "android.permission.READ_SOCIAL_STREAM"; field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS"; field public static final java.lang.String READ_SYNC_STATS = "android.permission.READ_SYNC_STATS"; field public static final java.lang.String READ_USER_DICTIONARY = "android.permission.READ_USER_DICTIONARY"; field public static final java.lang.String REBOOT = "android.permission.REBOOT"; field public static final java.lang.String RECEIVE_BOOT_COMPLETED = "android.permission.RECEIVE_BOOT_COMPLETED"; field public static final java.lang.String RECEIVE_MMS = "android.permission.RECEIVE_MMS"; Loading Loading @@ -134,6 +135,7 @@ package android { field public static final java.lang.String WRITE_SMS = "android.permission.WRITE_SMS"; field public static final java.lang.String WRITE_SOCIAL_STREAM = "android.permission.WRITE_SOCIAL_STREAM"; field public static final java.lang.String WRITE_SYNC_SETTINGS = "android.permission.WRITE_SYNC_SETTINGS"; field public static final java.lang.String WRITE_USER_DICTIONARY = "android.permission.WRITE_USER_DICTIONARY"; } public static final class Manifest.permission_group { Loading Loading @@ -738,6 +740,7 @@ package android { field public static final int pathPrefix = 16842795; // 0x101002b field public static final int permission = 16842758; // 0x1010006 field public static final int permissionGroup = 16842762; // 0x101000a field public static final int permissionGroupFlags = 16843700; // 0x10103b4 field public static final int persistent = 16842765; // 0x101000d field public static final int persistentDrawingCache = 16842990; // 0x10100ee field public static final deprecated int phoneNumber = 16843111; // 0x1010167 Loading Loading @@ -6577,8 +6580,11 @@ package android.content.pm { method public int describeContents(); method public java.lang.CharSequence loadDescription(android.content.pm.PackageManager); field public static final android.os.Parcelable.Creator CREATOR; field public static final int FLAG_PERSONAL_INFO = 1; // 0x1 field public int descriptionRes; field public int flags; field public java.lang.CharSequence nonLocalizedDescription; field public int priority; } public class PermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
core/java/android/content/pm/PackageParser.java +9 −2 Original line number Diff line number Diff line Loading @@ -970,7 +970,7 @@ public class PackageParser { return null; } } else if (tagName.equals("permission-group")) { if (parsePermissionGroup(pkg, res, parser, attrs, outError) == null) { if (parsePermissionGroup(pkg, flags, res, parser, attrs, outError) == null) { return null; } } else if (tagName.equals("permission")) { Loading Loading @@ -1432,7 +1432,7 @@ public class PackageParser { return buildCompoundName(pkg, procSeq, "taskAffinity", outError); } private PermissionGroup parsePermissionGroup(Package owner, Resources res, private PermissionGroup parsePermissionGroup(Package owner, int flags, Resources res, XmlPullParser parser, AttributeSet attrs, String[] outError) throws XmlPullParserException, IOException { PermissionGroup perm = new PermissionGroup(owner); Loading @@ -1454,6 +1454,13 @@ public class PackageParser { perm.info.descriptionRes = sa.getResourceId( com.android.internal.R.styleable.AndroidManifestPermissionGroup_description, 0); perm.info.flags = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_permissionGroupFlags, 0); perm.info.priority = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermissionGroup_priority, 0); if (perm.info.priority > 0 && (flags&PARSE_IS_SYSTEM) != 0) { perm.info.priority = 0; } sa.recycle(); Loading
core/java/android/content/pm/PermissionGroupInfo.java +24 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,23 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { */ public CharSequence nonLocalizedDescription; /** * Flag for {@link #flags}, corresponding to <code>personalInfo</code> * value of {@link android.R.attr#permissionGroupFlags}. */ public static final int FLAG_PERSONAL_INFO = 1<<0; /** * Additional flags about this group as given by * {@link android.R.attr#permissionGroupFlags}. */ public int flags; /** * Prioritization of this group, for visually sorting with other groups. */ public int priority; public PermissionGroupInfo() { } Loading @@ -48,6 +65,8 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super(orig); descriptionRes = orig.descriptionRes; nonLocalizedDescription = orig.nonLocalizedDescription; flags = orig.flags; priority = orig.priority; } /** Loading Loading @@ -77,7 +96,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { public String toString() { return "PermissionGroupInfo{" + Integer.toHexString(System.identityHashCode(this)) + " " + name + "}"; + " " + name + " flgs=0x" + Integer.toHexString(flags) + "}"; } public int describeContents() { Loading @@ -88,6 +107,8 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super.writeToParcel(dest, parcelableFlags); dest.writeInt(descriptionRes); TextUtils.writeToParcel(nonLocalizedDescription, dest, parcelableFlags); dest.writeInt(flags); dest.writeInt(priority); } public static final Creator<PermissionGroupInfo> CREATOR = Loading @@ -104,5 +125,7 @@ public class PermissionGroupInfo extends PackageItemInfo implements Parcelable { super(source); descriptionRes = source.readInt(); nonLocalizedDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); flags = source.readInt(); priority = source.readInt(); } }
core/res/AndroidManifest.xml +6 −7 Original line number Diff line number Diff line Loading @@ -258,7 +258,8 @@ expressed as two distinct permissions). --> <permission-group android:name="android.permission-group.PERSONAL_INFO" android:label="@string/permgrouplab_personalInfo" android:description="@string/permgroupdesc_personalInfo" /> android:description="@string/permgroupdesc_personalInfo" android:permissionGroupFlags="personalInfo" /> <!-- Allows an application to read the user's contacts data. --> <permission android:name="android.permission.READ_CONTACTS" Loading Loading @@ -338,16 +339,14 @@ <!-- Allows an application to read the user dictionary. This should really only be required by an IME, or a dictionary editor like the Settings app. @hide Pending API council approval --> the Settings app. --> <permission android:name="android.permission.READ_USER_DICTIONARY" android:permissionGroup="android.permission-group.PERSONAL_INFO" android:protectionLevel="dangerous" android:label="@string/permlab_readDictionary" android:description="@string/permdesc_readDictionary" /> <!-- Allows an application to write to the user dictionary. @hide Pending API council approval --> <!-- Allows an application to write to the user dictionary. --> <permission android:name="android.permission.WRITE_USER_DICTIONARY" android:permissionGroup="android.permission-group.PERSONAL_INFO" android:protectionLevel="normal" Loading Loading @@ -793,7 +792,7 @@ as locale. --> <permission android:name="android.permission.CHANGE_CONFIGURATION" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="dangerous" android:protectionLevel="signature|system|development" android:label="@string/permlab_changeConfiguration" android:description="@string/permdesc_changeConfiguration" /> Loading Loading @@ -844,7 +843,7 @@ <!-- Modify the global animation scaling factor. --> <permission android:name="android.permission.SET_ANIMATION_SCALE" android:permissionGroup="android.permission-group.SYSTEM_TOOLS" android:protectionLevel="dangerous" android:protectionLevel="signature|system|development" android:label="@string/permlab_setAnimationScale" android:description="@string/permdesc_setAnimationScale" /> Loading
core/res/res/values/attrs_manifest.xml +11 −1 Original line number Diff line number Diff line Loading @@ -199,6 +199,14 @@ <flag name="development" value="0x20" /> </attr> <!-- Flags indicating more context for a permission group. --> <attr name="permissionGroupFlags"> <!-- Set to indicate that this permission group contains permissions protecting access to some information that is considered personal to the user (such as contacts, e-mails, etc). --> <flag name="personalInfo" value="0x0001" /> </attr> <!-- Specified the name of a group that this permission is associated with. The group must have been defined with the {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. --> Loading Loading @@ -895,6 +903,8 @@ <attr name="icon" /> <attr name="logo" /> <attr name="description" /> <attr name="permissionGroupFlags" /> <attr name="priority" /> </declare-styleable> <!-- The <code>permission-tree</code> tag declares the base of a tree of Loading