Loading api/current.txt +7 −33 Original line number Diff line number Diff line Loading @@ -224,6 +224,11 @@ package android { public static final class R.attr { ctor public R.attr(); field public static final int __removed1 = 16844185; // 0x1010599 field public static final int __removed2 = 16844186; // 0x101059a field public static final int __removed3 = 16844187; // 0x101059b field public static final int __removed4 = 16844188; // 0x101059c field public static final int __removed5 = 16844189; // 0x101059d field public static final int absListViewStyle = 16842858; // 0x101006a field public static final int accessibilityEventTypes = 16843648; // 0x1010380 field public static final int accessibilityFeedbackType = 16843650; // 0x1010382 Loading Loading @@ -484,10 +489,6 @@ package android { field public static final int dashGap = 16843175; // 0x10101a7 field public static final int dashWidth = 16843174; // 0x10101a6 field public static final int data = 16842798; // 0x101002e field public static final int dataRetentionTime = 16844189; // 0x101059d field public static final int dataSentOffDevice = 16844186; // 0x101059a field public static final int dataSharedWithThirdParty = 16844187; // 0x101059b field public static final int dataUsedForMonetization = 16844188; // 0x101059c field public static final int datePickerDialogTheme = 16843948; // 0x10104ac field public static final int datePickerMode = 16843955; // 0x10104b3 field public static final int datePickerStyle = 16843612; // 0x101035c Loading Loading @@ -1508,7 +1509,6 @@ package android { field @Deprecated public static final int unfocusedMonthDateColor = 16843588; // 0x1010344 field public static final int unselectedAlpha = 16843278; // 0x101020e field public static final int updatePeriodMillis = 16843344; // 0x1010250 field public static final int usageInfoRequired = 16844185; // 0x1010599 field public static final int use32bitAbi = 16844053; // 0x1010515 field public static final int useAppZygote = 16844184; // 0x1010598 field public static final int useDefaultMargins = 16843641; // 0x1010379 Loading Loading @@ -10265,7 +10265,6 @@ package android.content { field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED"; field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED"; field public static final String ACTION_PASTE = "android.intent.action.PASTE"; field public static final String ACTION_PERMISSION_USAGE_DETAILS = "android.intent.action.PERMISSION_USAGE_DETAILS"; field public static final String ACTION_PICK = "android.intent.action.PICK"; field public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY"; field public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED"; Loading Loading @@ -10391,7 +10390,6 @@ package android.content { field public static final String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE"; field public static final String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI"; field public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME"; field public static final String EXTRA_PERMISSION_USAGE_PERMISSIONS = "android.intent.extra.PERMISSION_USAGE_PERMISSIONS"; field public static final String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER"; field public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT"; field public static final String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY"; Loading Loading @@ -11356,8 +11354,8 @@ package android.content.pm { field public android.content.pm.ProviderInfo[] providers; field public android.content.pm.ActivityInfo[] receivers; field public android.content.pm.FeatureInfo[] reqFeatures; field @Deprecated public String[] requestedPermissions; field @Deprecated public int[] requestedPermissionsFlags; field public String[] requestedPermissions; field public int[] requestedPermissionsFlags; field public android.content.pm.ServiceInfo[] services; field public String sharedUserId; field public int sharedUserLabel; Loading @@ -11365,7 +11363,6 @@ package android.content.pm { field public android.content.pm.SigningInfo signingInfo; field public String[] splitNames; field public int[] splitRevisionCodes; field public android.content.pm.UsesPermissionInfo[] usesPermissions; field @Deprecated public int versionCode; field public String versionName; } Loading Loading @@ -11865,7 +11862,6 @@ package android.content.pm { field public String group; field public CharSequence nonLocalizedDescription; field @Deprecated public int protectionLevel; field public boolean usageInfoRequired; } public final class ProviderInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable { Loading Loading @@ -12057,28 +12053,6 @@ package android.content.pm { field public static final android.os.Parcelable.Creator<android.content.pm.SigningInfo> CREATOR; } public final class UsesPermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { method public int describeContents(); method public int getDataRetention(); method public int getDataRetentionWeeks(); method public int getDataSentOffDevice(); method public int getDataSharedWithThirdParty(); method public int getDataUsedForMonetization(); method public int getFlags(); method public String getPermission(); field public static final android.os.Parcelable.Creator<android.content.pm.UsesPermissionInfo> CREATOR; field public static final int FLAG_REQUESTED_PERMISSION_GRANTED = 2; // 0x2 field public static final int RETENTION_NOT_RETAINED = 1; // 0x1 field public static final int RETENTION_SPECIFIED = 4; // 0x4 field public static final int RETENTION_UNDEFINED = 0; // 0x0 field public static final int RETENTION_UNLIMITED = 3; // 0x3 field public static final int RETENTION_USER_SELECTED = 2; // 0x2 field public static final int USAGE_NO = 3; // 0x3 field public static final int USAGE_UNDEFINED = 0; // 0x0 field public static final int USAGE_USER_TRIGGERED = 2; // 0x2 field public static final int USAGE_YES = 1; // 0x1 } public final class VersionedPackage implements android.os.Parcelable { ctor public VersionedPackage(@NonNull String, int); ctor public VersionedPackage(@NonNull String, long); core/java/android/content/Intent.java +0 −22 Original line number Diff line number Diff line Loading @@ -816,28 +816,6 @@ public class Intent implements Parcelable, Cloneable { public static final String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO"; /** * Activity Action: Start an activity to show the app's detailed usage information for * permission protected data. * * The Intent contains an extra {@link #EXTRA_PERMISSION_USAGE_PERMISSIONS} that is of * type {@code String[]} and contains the specific permissions to show information for. * * Apps should handle this intent if they want to provide more information about permission * usage to users beyond the information provided in the manifest. */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_PERMISSION_USAGE_DETAILS = "android.intent.action.PERMISSION_USAGE_DETAILS"; /** * The name of the extra used to contain the permissions in * {@link #ACTION_PERMISSION_USAGE_DETAILS}. * @see #ACTION_PERMISSION_USAGE_DETAILS */ public static final String EXTRA_PERMISSION_USAGE_PERMISSIONS = "android.intent.extra.PERMISSION_USAGE_PERMISSIONS"; /** * Represents a shortcut/live folder icon resource. * Loading core/java/android/content/pm/PackageInfo.java +0 −18 Original line number Diff line number Diff line Loading @@ -204,10 +204,7 @@ public class PackageInfo implements Parcelable { * {@link PackageManager#GET_PERMISSIONS} was set. This list includes * all permissions requested, even those that were not granted or known * by the system at install time. * * @deprecated Use {@link #usesPermissions} */ @Deprecated public String[] requestedPermissions; /** Loading @@ -217,22 +214,9 @@ public class PackageInfo implements Parcelable { * {@link PackageManager#GET_PERMISSIONS} was set. Each value matches * the corresponding entry in {@link #requestedPermissions}, and will have * the flag {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate. * * @deprecated Use {@link #usesPermissions} */ @Deprecated public int[] requestedPermissionsFlags; /** * Array of all {@link android.R.styleable#AndroidManifestUsesPermission * <uses-permission>} tags included under <manifest>, * or null if there were none. This is only filled in if the flag * {@link PackageManager#GET_PERMISSIONS} was set. This list includes * all permissions requested, even those that were not granted or known * by the system at install time. */ public UsesPermissionInfo[] usesPermissions; /** * Flag for {@link #requestedPermissionsFlags}: the requested permission * is required for the application to run; the user can not optionally Loading Loading @@ -480,7 +464,6 @@ public class PackageInfo implements Parcelable { dest.writeTypedArray(permissions, parcelableFlags); dest.writeStringArray(requestedPermissions); dest.writeIntArray(requestedPermissionsFlags); dest.writeTypedArray(usesPermissions, parcelableFlags); dest.writeTypedArray(signatures, parcelableFlags); dest.writeTypedArray(configPreferences, parcelableFlags); dest.writeTypedArray(reqFeatures, parcelableFlags); Loading Loading @@ -545,7 +528,6 @@ public class PackageInfo implements Parcelable { permissions = source.createTypedArray(PermissionInfo.CREATOR); requestedPermissions = source.createStringArray(); requestedPermissionsFlags = source.createIntArray(); usesPermissions = source.createTypedArray(UsesPermissionInfo.CREATOR); signatures = source.createTypedArray(Signature.CREATOR); configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); Loading core/java/android/content/pm/PackageParser.java +13 −75 Original line number Diff line number Diff line Loading @@ -791,23 +791,18 @@ public class PackageParser { pi.permissions[i] = generatePermissionInfo(p.permissions.get(i), flags); } } N = p.usesPermissionInfos.size(); N = p.requestedPermissions.size(); if (N > 0) { pi.requestedPermissions = new String[N]; pi.requestedPermissionsFlags = new int[N]; pi.usesPermissions = new UsesPermissionInfo[N]; for (int i=0; i<N; i++) { UsesPermissionInfo info = p.usesPermissionInfos.get(i); final String perm = info.getPermission(); final String perm = p.requestedPermissions.get(i); pi.requestedPermissions[i] = perm; int permissionFlags = 0; // The notion of required permissions is deprecated but for compatibility. permissionFlags |= PackageInfo.REQUESTED_PERMISSION_REQUIRED; pi.requestedPermissionsFlags[i] |= PackageInfo.REQUESTED_PERMISSION_REQUIRED; if (grantedPermissions != null && grantedPermissions.contains(perm)) { permissionFlags |= PackageInfo.REQUESTED_PERMISSION_GRANTED; pi.requestedPermissionsFlags[i] |= PackageInfo.REQUESTED_PERMISSION_GRANTED; } pi.requestedPermissionsFlags[i] = permissionFlags; pi.usesPermissions[i] = new UsesPermissionInfo(info, permissionFlags); } } } Loading Loading @@ -2175,12 +2170,12 @@ public class PackageParser { return null; } } else if (tagName.equals(TAG_USES_PERMISSION)) { if (!parseUsesPermission(pkg, res, parser, outError)) { if (!parseUsesPermission(pkg, res, parser)) { return null; } } else if (tagName.equals(TAG_USES_PERMISSION_SDK_M) || tagName.equals(TAG_USES_PERMISSION_SDK_23)) { if (!parseUsesPermission(pkg, res, parser, outError)) { if (!parseUsesPermission(pkg, res, parser)) { return null; } } else if (tagName.equals(TAG_USES_CONFIGURATION)) { Loading Loading @@ -2498,7 +2493,7 @@ public class PackageParser { newPermsMsg.append(' '); } newPermsMsg.append(npi.name); addRequestedPermission(pkg, npi.name); pkg.requestedPermissions.add(npi.name); pkg.implicitPermissions.add(npi.name); } } Loading @@ -2519,7 +2514,7 @@ public class PackageParser { for (int in = 0; in < newPerms.size(); in++) { final String perm = newPerms.get(in); if (!pkg.requestedPermissions.contains(perm)) { addRequestedPermission(pkg, perm); pkg.requestedPermissions.add(perm); pkg.implicitPermissions.add(perm); } } Loading Loading @@ -2599,13 +2594,13 @@ public class PackageParser { } } else { if (FORCE_AUDIO_PACKAGES.contains(pkg.packageName)) { addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_AUDIO); pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_AUDIO); } if (FORCE_VIDEO_PACKAGES.contains(pkg.packageName)) { addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_VIDEO); pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_VIDEO); } if (FORCE_IMAGES_PACKAGES.contains(pkg.packageName)) { addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_IMAGES); pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_IMAGES); } } Loading Loading @@ -2645,12 +2640,6 @@ public class PackageParser { } /** * Helper method for adding a requested permission to a package outside of a uses-permission. */ private void addRequestedPermission(Package pkg, String permission) { pkg.requestedPermissions.add(permission); pkg.usesPermissionInfos.add(new UsesPermissionInfo(permission)); } /** * Matches a given {@code targetCode} against a set of release codeNames. Target codes can Loading Loading @@ -2987,8 +2976,8 @@ public class PackageParser { return certSha256Digests; } private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser, String[] outError) throws XmlPullParserException, IOException { private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestUsesPermission); Loading @@ -3012,44 +3001,6 @@ public class PackageParser { final String requiredNotfeature = sa.getNonConfigurationString( com.android.internal.R.styleable.AndroidManifestUsesPermission_requiredNotFeature, 0); int dataSentOffDevice = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataSentOffDevice, 0); int dataSharedWithThirdParty = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataSharedWithThirdParty, 0); int dataUsedForMonetization = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataUsedForMonetization, 0); int retentionWeeks = -1; int retention; String rawRetention = sa.getString( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataRetentionTime); if (rawRetention == null) { retention = UsesPermissionInfo.RETENTION_UNDEFINED; } else if ("notRetained".equals(rawRetention)) { retention = UsesPermissionInfo.RETENTION_NOT_RETAINED; } else if ("userSelected".equals(rawRetention)) { retention = UsesPermissionInfo.RETENTION_USER_SELECTED; } else if ("unlimited".equals(rawRetention)) { retention = UsesPermissionInfo.RETENTION_UNLIMITED; } else { // A number of weeks was specified retention = UsesPermissionInfo.RETENTION_SPECIFIED; retentionWeeks = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataRetentionTime, -1); if (retentionWeeks < 0) { outError[0] = "Bad value provided for dataRetentionTime."; mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; XmlUtils.skipCurrentTag(parser); sa.recycle(); return false; } } sa.recycle(); XmlUtils.skipCurrentTag(parser); Loading Loading @@ -3082,10 +3033,6 @@ public class PackageParser { + parser.getPositionDescription()); } UsesPermissionInfo info = new UsesPermissionInfo(name, dataSentOffDevice, dataSharedWithThirdParty, dataUsedForMonetization, retention, retentionWeeks); pkg.usesPermissionInfos.add(info); return true; } Loading Loading @@ -3420,10 +3367,6 @@ public class PackageParser { perm.info.flags = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermission_permissionFlags, 0); perm.info.usageInfoRequired = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermission_usageInfoRequired, 0) != 0; sa.recycle(); if (perm.info.protectionLevel == -1) { Loading Loading @@ -6625,9 +6568,6 @@ public class PackageParser { @UnsupportedAppUsage public final ArrayList<String> requestedPermissions = new ArrayList<String>(); public final ArrayList<UsesPermissionInfo> usesPermissionInfos = new ArrayList<>(); /** Permissions requested but not in the manifest. */ public final ArrayList<String> implicitPermissions = new ArrayList<>(); Loading Loading @@ -7159,7 +7099,6 @@ public class PackageParser { dest.readStringList(requestedPermissions); internStringArrayList(requestedPermissions); dest.readParcelableList(usesPermissionInfos, boot); dest.readStringList(implicitPermissions); internStringArrayList(implicitPermissions); protectedBroadcasts = dest.createStringArrayList(); Loading Loading @@ -7327,7 +7266,6 @@ public class PackageParser { dest.writeParcelableList(instrumentation, flags); dest.writeStringList(requestedPermissions); dest.writeParcelableList(usesPermissionInfos, flags); dest.writeStringList(implicitPermissions); dest.writeStringList(protectedBroadcasts); Loading core/java/android/content/pm/PermissionInfo.java +0 −10 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.annotation.IntDef; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; Loading Loading @@ -368,12 +367,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { */ public CharSequence nonLocalizedDescription; /** * If {@code true} an application targeting {@link Build.VERSION_CODES#Q} <em>must</em> * include permission data usage information in order to be able to be granted this permission. */ public boolean usageInfoRequired; /** @hide */ public static int fixProtectionLevel(int level) { if (level == PROTECTION_SIGNATURE_OR_SYSTEM) { Loading Loading @@ -475,7 +468,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { descriptionRes = orig.descriptionRes; requestRes = orig.requestRes; nonLocalizedDescription = orig.nonLocalizedDescription; usageInfoRequired = orig.usageInfoRequired; } /** Loading Loading @@ -540,7 +532,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { dest.writeInt(descriptionRes); dest.writeInt(requestRes); TextUtils.writeToParcel(nonLocalizedDescription, dest, parcelableFlags); dest.writeInt(usageInfoRequired ? 1 : 0); } /** @hide */ Loading Loading @@ -581,6 +572,5 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { descriptionRes = source.readInt(); requestRes = source.readInt(); nonLocalizedDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); usageInfoRequired = source.readInt() != 0; } } Loading
api/current.txt +7 −33 Original line number Diff line number Diff line Loading @@ -224,6 +224,11 @@ package android { public static final class R.attr { ctor public R.attr(); field public static final int __removed1 = 16844185; // 0x1010599 field public static final int __removed2 = 16844186; // 0x101059a field public static final int __removed3 = 16844187; // 0x101059b field public static final int __removed4 = 16844188; // 0x101059c field public static final int __removed5 = 16844189; // 0x101059d field public static final int absListViewStyle = 16842858; // 0x101006a field public static final int accessibilityEventTypes = 16843648; // 0x1010380 field public static final int accessibilityFeedbackType = 16843650; // 0x1010382 Loading Loading @@ -484,10 +489,6 @@ package android { field public static final int dashGap = 16843175; // 0x10101a7 field public static final int dashWidth = 16843174; // 0x10101a6 field public static final int data = 16842798; // 0x101002e field public static final int dataRetentionTime = 16844189; // 0x101059d field public static final int dataSentOffDevice = 16844186; // 0x101059a field public static final int dataSharedWithThirdParty = 16844187; // 0x101059b field public static final int dataUsedForMonetization = 16844188; // 0x101059c field public static final int datePickerDialogTheme = 16843948; // 0x10104ac field public static final int datePickerMode = 16843955; // 0x10104b3 field public static final int datePickerStyle = 16843612; // 0x101035c Loading Loading @@ -1508,7 +1509,6 @@ package android { field @Deprecated public static final int unfocusedMonthDateColor = 16843588; // 0x1010344 field public static final int unselectedAlpha = 16843278; // 0x101020e field public static final int updatePeriodMillis = 16843344; // 0x1010250 field public static final int usageInfoRequired = 16844185; // 0x1010599 field public static final int use32bitAbi = 16844053; // 0x1010515 field public static final int useAppZygote = 16844184; // 0x1010598 field public static final int useDefaultMargins = 16843641; // 0x1010379 Loading Loading @@ -10265,7 +10265,6 @@ package android.content { field public static final String ACTION_PACKAGE_RESTARTED = "android.intent.action.PACKAGE_RESTARTED"; field public static final String ACTION_PACKAGE_VERIFIED = "android.intent.action.PACKAGE_VERIFIED"; field public static final String ACTION_PASTE = "android.intent.action.PASTE"; field public static final String ACTION_PERMISSION_USAGE_DETAILS = "android.intent.action.PERMISSION_USAGE_DETAILS"; field public static final String ACTION_PICK = "android.intent.action.PICK"; field public static final String ACTION_PICK_ACTIVITY = "android.intent.action.PICK_ACTIVITY"; field public static final String ACTION_POWER_CONNECTED = "android.intent.action.ACTION_POWER_CONNECTED"; Loading Loading @@ -10391,7 +10390,6 @@ package android.content { field public static final String EXTRA_NOT_UNKNOWN_SOURCE = "android.intent.extra.NOT_UNKNOWN_SOURCE"; field public static final String EXTRA_ORIGINATING_URI = "android.intent.extra.ORIGINATING_URI"; field public static final String EXTRA_PACKAGE_NAME = "android.intent.extra.PACKAGE_NAME"; field public static final String EXTRA_PERMISSION_USAGE_PERMISSIONS = "android.intent.extra.PERMISSION_USAGE_PERMISSIONS"; field public static final String EXTRA_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER"; field public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT"; field public static final String EXTRA_PROCESS_TEXT_READONLY = "android.intent.extra.PROCESS_TEXT_READONLY"; Loading Loading @@ -11356,8 +11354,8 @@ package android.content.pm { field public android.content.pm.ProviderInfo[] providers; field public android.content.pm.ActivityInfo[] receivers; field public android.content.pm.FeatureInfo[] reqFeatures; field @Deprecated public String[] requestedPermissions; field @Deprecated public int[] requestedPermissionsFlags; field public String[] requestedPermissions; field public int[] requestedPermissionsFlags; field public android.content.pm.ServiceInfo[] services; field public String sharedUserId; field public int sharedUserLabel; Loading @@ -11365,7 +11363,6 @@ package android.content.pm { field public android.content.pm.SigningInfo signingInfo; field public String[] splitNames; field public int[] splitRevisionCodes; field public android.content.pm.UsesPermissionInfo[] usesPermissions; field @Deprecated public int versionCode; field public String versionName; } Loading Loading @@ -11865,7 +11862,6 @@ package android.content.pm { field public String group; field public CharSequence nonLocalizedDescription; field @Deprecated public int protectionLevel; field public boolean usageInfoRequired; } public final class ProviderInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable { Loading Loading @@ -12057,28 +12053,6 @@ package android.content.pm { field public static final android.os.Parcelable.Creator<android.content.pm.SigningInfo> CREATOR; } public final class UsesPermissionInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable { method public int describeContents(); method public int getDataRetention(); method public int getDataRetentionWeeks(); method public int getDataSentOffDevice(); method public int getDataSharedWithThirdParty(); method public int getDataUsedForMonetization(); method public int getFlags(); method public String getPermission(); field public static final android.os.Parcelable.Creator<android.content.pm.UsesPermissionInfo> CREATOR; field public static final int FLAG_REQUESTED_PERMISSION_GRANTED = 2; // 0x2 field public static final int RETENTION_NOT_RETAINED = 1; // 0x1 field public static final int RETENTION_SPECIFIED = 4; // 0x4 field public static final int RETENTION_UNDEFINED = 0; // 0x0 field public static final int RETENTION_UNLIMITED = 3; // 0x3 field public static final int RETENTION_USER_SELECTED = 2; // 0x2 field public static final int USAGE_NO = 3; // 0x3 field public static final int USAGE_UNDEFINED = 0; // 0x0 field public static final int USAGE_USER_TRIGGERED = 2; // 0x2 field public static final int USAGE_YES = 1; // 0x1 } public final class VersionedPackage implements android.os.Parcelable { ctor public VersionedPackage(@NonNull String, int); ctor public VersionedPackage(@NonNull String, long);
core/java/android/content/Intent.java +0 −22 Original line number Diff line number Diff line Loading @@ -816,28 +816,6 @@ public class Intent implements Parcelable, Cloneable { public static final String ACTION_SHOW_APP_INFO = "android.intent.action.SHOW_APP_INFO"; /** * Activity Action: Start an activity to show the app's detailed usage information for * permission protected data. * * The Intent contains an extra {@link #EXTRA_PERMISSION_USAGE_PERMISSIONS} that is of * type {@code String[]} and contains the specific permissions to show information for. * * Apps should handle this intent if they want to provide more information about permission * usage to users beyond the information provided in the manifest. */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_PERMISSION_USAGE_DETAILS = "android.intent.action.PERMISSION_USAGE_DETAILS"; /** * The name of the extra used to contain the permissions in * {@link #ACTION_PERMISSION_USAGE_DETAILS}. * @see #ACTION_PERMISSION_USAGE_DETAILS */ public static final String EXTRA_PERMISSION_USAGE_PERMISSIONS = "android.intent.extra.PERMISSION_USAGE_PERMISSIONS"; /** * Represents a shortcut/live folder icon resource. * Loading
core/java/android/content/pm/PackageInfo.java +0 −18 Original line number Diff line number Diff line Loading @@ -204,10 +204,7 @@ public class PackageInfo implements Parcelable { * {@link PackageManager#GET_PERMISSIONS} was set. This list includes * all permissions requested, even those that were not granted or known * by the system at install time. * * @deprecated Use {@link #usesPermissions} */ @Deprecated public String[] requestedPermissions; /** Loading @@ -217,22 +214,9 @@ public class PackageInfo implements Parcelable { * {@link PackageManager#GET_PERMISSIONS} was set. Each value matches * the corresponding entry in {@link #requestedPermissions}, and will have * the flag {@link #REQUESTED_PERMISSION_GRANTED} set as appropriate. * * @deprecated Use {@link #usesPermissions} */ @Deprecated public int[] requestedPermissionsFlags; /** * Array of all {@link android.R.styleable#AndroidManifestUsesPermission * <uses-permission>} tags included under <manifest>, * or null if there were none. This is only filled in if the flag * {@link PackageManager#GET_PERMISSIONS} was set. This list includes * all permissions requested, even those that were not granted or known * by the system at install time. */ public UsesPermissionInfo[] usesPermissions; /** * Flag for {@link #requestedPermissionsFlags}: the requested permission * is required for the application to run; the user can not optionally Loading Loading @@ -480,7 +464,6 @@ public class PackageInfo implements Parcelable { dest.writeTypedArray(permissions, parcelableFlags); dest.writeStringArray(requestedPermissions); dest.writeIntArray(requestedPermissionsFlags); dest.writeTypedArray(usesPermissions, parcelableFlags); dest.writeTypedArray(signatures, parcelableFlags); dest.writeTypedArray(configPreferences, parcelableFlags); dest.writeTypedArray(reqFeatures, parcelableFlags); Loading Loading @@ -545,7 +528,6 @@ public class PackageInfo implements Parcelable { permissions = source.createTypedArray(PermissionInfo.CREATOR); requestedPermissions = source.createStringArray(); requestedPermissionsFlags = source.createIntArray(); usesPermissions = source.createTypedArray(UsesPermissionInfo.CREATOR); signatures = source.createTypedArray(Signature.CREATOR); configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); reqFeatures = source.createTypedArray(FeatureInfo.CREATOR); Loading
core/java/android/content/pm/PackageParser.java +13 −75 Original line number Diff line number Diff line Loading @@ -791,23 +791,18 @@ public class PackageParser { pi.permissions[i] = generatePermissionInfo(p.permissions.get(i), flags); } } N = p.usesPermissionInfos.size(); N = p.requestedPermissions.size(); if (N > 0) { pi.requestedPermissions = new String[N]; pi.requestedPermissionsFlags = new int[N]; pi.usesPermissions = new UsesPermissionInfo[N]; for (int i=0; i<N; i++) { UsesPermissionInfo info = p.usesPermissionInfos.get(i); final String perm = info.getPermission(); final String perm = p.requestedPermissions.get(i); pi.requestedPermissions[i] = perm; int permissionFlags = 0; // The notion of required permissions is deprecated but for compatibility. permissionFlags |= PackageInfo.REQUESTED_PERMISSION_REQUIRED; pi.requestedPermissionsFlags[i] |= PackageInfo.REQUESTED_PERMISSION_REQUIRED; if (grantedPermissions != null && grantedPermissions.contains(perm)) { permissionFlags |= PackageInfo.REQUESTED_PERMISSION_GRANTED; pi.requestedPermissionsFlags[i] |= PackageInfo.REQUESTED_PERMISSION_GRANTED; } pi.requestedPermissionsFlags[i] = permissionFlags; pi.usesPermissions[i] = new UsesPermissionInfo(info, permissionFlags); } } } Loading Loading @@ -2175,12 +2170,12 @@ public class PackageParser { return null; } } else if (tagName.equals(TAG_USES_PERMISSION)) { if (!parseUsesPermission(pkg, res, parser, outError)) { if (!parseUsesPermission(pkg, res, parser)) { return null; } } else if (tagName.equals(TAG_USES_PERMISSION_SDK_M) || tagName.equals(TAG_USES_PERMISSION_SDK_23)) { if (!parseUsesPermission(pkg, res, parser, outError)) { if (!parseUsesPermission(pkg, res, parser)) { return null; } } else if (tagName.equals(TAG_USES_CONFIGURATION)) { Loading Loading @@ -2498,7 +2493,7 @@ public class PackageParser { newPermsMsg.append(' '); } newPermsMsg.append(npi.name); addRequestedPermission(pkg, npi.name); pkg.requestedPermissions.add(npi.name); pkg.implicitPermissions.add(npi.name); } } Loading @@ -2519,7 +2514,7 @@ public class PackageParser { for (int in = 0; in < newPerms.size(); in++) { final String perm = newPerms.get(in); if (!pkg.requestedPermissions.contains(perm)) { addRequestedPermission(pkg, perm); pkg.requestedPermissions.add(perm); pkg.implicitPermissions.add(perm); } } Loading Loading @@ -2599,13 +2594,13 @@ public class PackageParser { } } else { if (FORCE_AUDIO_PACKAGES.contains(pkg.packageName)) { addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_AUDIO); pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_AUDIO); } if (FORCE_VIDEO_PACKAGES.contains(pkg.packageName)) { addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_VIDEO); pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_VIDEO); } if (FORCE_IMAGES_PACKAGES.contains(pkg.packageName)) { addRequestedPermission(pkg, android.Manifest.permission.READ_MEDIA_IMAGES); pkg.requestedPermissions.add(android.Manifest.permission.READ_MEDIA_IMAGES); } } Loading Loading @@ -2645,12 +2640,6 @@ public class PackageParser { } /** * Helper method for adding a requested permission to a package outside of a uses-permission. */ private void addRequestedPermission(Package pkg, String permission) { pkg.requestedPermissions.add(permission); pkg.usesPermissionInfos.add(new UsesPermissionInfo(permission)); } /** * Matches a given {@code targetCode} against a set of release codeNames. Target codes can Loading Loading @@ -2987,8 +2976,8 @@ public class PackageParser { return certSha256Digests; } private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser, String[] outError) throws XmlPullParserException, IOException { private boolean parseUsesPermission(Package pkg, Resources res, XmlResourceParser parser) throws XmlPullParserException, IOException { TypedArray sa = res.obtainAttributes(parser, com.android.internal.R.styleable.AndroidManifestUsesPermission); Loading @@ -3012,44 +3001,6 @@ public class PackageParser { final String requiredNotfeature = sa.getNonConfigurationString( com.android.internal.R.styleable.AndroidManifestUsesPermission_requiredNotFeature, 0); int dataSentOffDevice = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataSentOffDevice, 0); int dataSharedWithThirdParty = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataSharedWithThirdParty, 0); int dataUsedForMonetization = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataUsedForMonetization, 0); int retentionWeeks = -1; int retention; String rawRetention = sa.getString( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataRetentionTime); if (rawRetention == null) { retention = UsesPermissionInfo.RETENTION_UNDEFINED; } else if ("notRetained".equals(rawRetention)) { retention = UsesPermissionInfo.RETENTION_NOT_RETAINED; } else if ("userSelected".equals(rawRetention)) { retention = UsesPermissionInfo.RETENTION_USER_SELECTED; } else if ("unlimited".equals(rawRetention)) { retention = UsesPermissionInfo.RETENTION_UNLIMITED; } else { // A number of weeks was specified retention = UsesPermissionInfo.RETENTION_SPECIFIED; retentionWeeks = sa.getInt( com.android.internal.R.styleable.AndroidManifestUsesPermission_dataRetentionTime, -1); if (retentionWeeks < 0) { outError[0] = "Bad value provided for dataRetentionTime."; mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; XmlUtils.skipCurrentTag(parser); sa.recycle(); return false; } } sa.recycle(); XmlUtils.skipCurrentTag(parser); Loading Loading @@ -3082,10 +3033,6 @@ public class PackageParser { + parser.getPositionDescription()); } UsesPermissionInfo info = new UsesPermissionInfo(name, dataSentOffDevice, dataSharedWithThirdParty, dataUsedForMonetization, retention, retentionWeeks); pkg.usesPermissionInfos.add(info); return true; } Loading Loading @@ -3420,10 +3367,6 @@ public class PackageParser { perm.info.flags = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermission_permissionFlags, 0); perm.info.usageInfoRequired = sa.getInt( com.android.internal.R.styleable.AndroidManifestPermission_usageInfoRequired, 0) != 0; sa.recycle(); if (perm.info.protectionLevel == -1) { Loading Loading @@ -6625,9 +6568,6 @@ public class PackageParser { @UnsupportedAppUsage public final ArrayList<String> requestedPermissions = new ArrayList<String>(); public final ArrayList<UsesPermissionInfo> usesPermissionInfos = new ArrayList<>(); /** Permissions requested but not in the manifest. */ public final ArrayList<String> implicitPermissions = new ArrayList<>(); Loading Loading @@ -7159,7 +7099,6 @@ public class PackageParser { dest.readStringList(requestedPermissions); internStringArrayList(requestedPermissions); dest.readParcelableList(usesPermissionInfos, boot); dest.readStringList(implicitPermissions); internStringArrayList(implicitPermissions); protectedBroadcasts = dest.createStringArrayList(); Loading Loading @@ -7327,7 +7266,6 @@ public class PackageParser { dest.writeParcelableList(instrumentation, flags); dest.writeStringList(requestedPermissions); dest.writeParcelableList(usesPermissionInfos, flags); dest.writeStringList(implicitPermissions); dest.writeStringList(protectedBroadcasts); Loading
core/java/android/content/pm/PermissionInfo.java +0 −10 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.annotation.IntDef; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; Loading Loading @@ -368,12 +367,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { */ public CharSequence nonLocalizedDescription; /** * If {@code true} an application targeting {@link Build.VERSION_CODES#Q} <em>must</em> * include permission data usage information in order to be able to be granted this permission. */ public boolean usageInfoRequired; /** @hide */ public static int fixProtectionLevel(int level) { if (level == PROTECTION_SIGNATURE_OR_SYSTEM) { Loading Loading @@ -475,7 +468,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { descriptionRes = orig.descriptionRes; requestRes = orig.requestRes; nonLocalizedDescription = orig.nonLocalizedDescription; usageInfoRequired = orig.usageInfoRequired; } /** Loading Loading @@ -540,7 +532,6 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { dest.writeInt(descriptionRes); dest.writeInt(requestRes); TextUtils.writeToParcel(nonLocalizedDescription, dest, parcelableFlags); dest.writeInt(usageInfoRequired ? 1 : 0); } /** @hide */ Loading Loading @@ -581,6 +572,5 @@ public class PermissionInfo extends PackageItemInfo implements Parcelable { descriptionRes = source.readInt(); requestRes = source.readInt(); nonLocalizedDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); usageInfoRequired = source.readInt() != 0; } }