Loading core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -442,6 +442,7 @@ package android { public static final class R.attr { field public static final int allowClearUserDataOnFailedRestore = 16844288; // 0x1010600 field @FlaggedApi("android.permission.flags.replace_body_sensor_permission_enabled") public static final int backgroundPermission; field @FlaggedApi("android.content.res.manifest_flagging") public static final int featureFlag = 16844428; // 0x101068c field public static final int gameSessionService = 16844373; // 0x1010655 field public static final int hotwordDetectionService = 16844326; // 0x1010626 core/java/com/android/internal/pm/pkg/component/ParsedPermissionUtils.java +12 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.pm.pkg.component; import static com.android.internal.pm.pkg.parsing.ParsingPackageUtils.PARSE_APK_IN_APEX; import static com.android.internal.pm.pkg.parsing.ParsingUtils.NOT_SET; import android.annotation.NonNull; Loading @@ -26,6 +27,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.os.Build; import android.permission.flags.Flags; import android.util.ArrayMap; import android.util.EventLog; import android.util.Slog; Loading @@ -49,7 +51,7 @@ public class ParsedPermissionUtils { @NonNull public static ParseResult<ParsedPermission> parsePermission(ParsingPackage pkg, Resources res, XmlResourceParser parser, boolean useRoundIcon, ParseInput input) XmlResourceParser parser, boolean useRoundIcon, ParseInput input, int flags) throws IOException, XmlPullParserException { String packageName = pkg.getPackageName(); ParsedPermissionImpl permission = new ParsedPermissionImpl(); Loading Loading @@ -77,12 +79,18 @@ public class ParsedPermissionUtils { if (sa.hasValue( R.styleable.AndroidManifestPermission_backgroundPermission)) { if ("android".equals(packageName)) { final boolean isApkInApex = (flags & PARSE_APK_IN_APEX) != 0; final boolean canUseBackgroundPermissionAttr = "android".equals(packageName) || (Flags.replaceBodySensorPermissionEnabled() && isApkInApex); if (canUseBackgroundPermissionAttr) { permission.setBackgroundPermission(sa.getNonResourceString( R.styleable.AndroidManifestPermission_backgroundPermission)); } else { String allowedPackages = "'android'" + (Flags.replaceBodySensorPermissionEnabled() ? " and APK_IN_APEX" : ""); Slog.w(TAG, packageName + " defines a background permission. Only the " + "'android' package can do that."); + allowedPackages + " packages can do that."); } } Loading core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java +3 −3 Original line number Diff line number Diff line Loading @@ -1090,7 +1090,7 @@ public class ParsingPackageUtils { case TAG_PERMISSION_GROUP: return parsePermissionGroup(input, pkg, res, parser); case TAG_PERMISSION: return parsePermission(input, pkg, res, parser); return parsePermission(input, pkg, res, parser, flags); case TAG_PERMISSION_TREE: return parsePermissionTree(input, pkg, res, parser); case TAG_USES_PERMISSION: Loading Loading @@ -1329,10 +1329,10 @@ public class ParsingPackageUtils { } private static ParseResult<ParsingPackage> parsePermission(ParseInput input, ParsingPackage pkg, Resources res, XmlResourceParser parser) ParsingPackage pkg, Resources res, XmlResourceParser parser, int flags) throws XmlPullParserException, IOException { ParseResult<ParsedPermission> result = ParsedPermissionUtils.parsePermission( pkg, res, parser, sUseRoundIcon, input); pkg, res, parser, sUseRoundIcon, input, flags); if (result.isError()) { return input.error(result); } Loading core/res/res/values/public-staging.xml +3 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,9 @@ <public name="languageSettingsActivity"/> <!-- @FlaggedApi("android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM") --> <public name="dreamCategory"/> <!-- @FlaggedApi("android.permission.flags.replace_body_sensor_permission_enabled") @hide @SystemApi --> <public name="backgroundPermission"/> </staging-public-group> <staging-public-group type="id" first-id="0x01b60000"> Loading Loading
core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -442,6 +442,7 @@ package android { public static final class R.attr { field public static final int allowClearUserDataOnFailedRestore = 16844288; // 0x1010600 field @FlaggedApi("android.permission.flags.replace_body_sensor_permission_enabled") public static final int backgroundPermission; field @FlaggedApi("android.content.res.manifest_flagging") public static final int featureFlag = 16844428; // 0x101068c field public static final int gameSessionService = 16844373; // 0x1010655 field public static final int hotwordDetectionService = 16844326; // 0x1010626
core/java/com/android/internal/pm/pkg/component/ParsedPermissionUtils.java +12 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.pm.pkg.component; import static com.android.internal.pm.pkg.parsing.ParsingPackageUtils.PARSE_APK_IN_APEX; import static com.android.internal.pm.pkg.parsing.ParsingUtils.NOT_SET; import android.annotation.NonNull; Loading @@ -26,6 +27,7 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.os.Build; import android.permission.flags.Flags; import android.util.ArrayMap; import android.util.EventLog; import android.util.Slog; Loading @@ -49,7 +51,7 @@ public class ParsedPermissionUtils { @NonNull public static ParseResult<ParsedPermission> parsePermission(ParsingPackage pkg, Resources res, XmlResourceParser parser, boolean useRoundIcon, ParseInput input) XmlResourceParser parser, boolean useRoundIcon, ParseInput input, int flags) throws IOException, XmlPullParserException { String packageName = pkg.getPackageName(); ParsedPermissionImpl permission = new ParsedPermissionImpl(); Loading Loading @@ -77,12 +79,18 @@ public class ParsedPermissionUtils { if (sa.hasValue( R.styleable.AndroidManifestPermission_backgroundPermission)) { if ("android".equals(packageName)) { final boolean isApkInApex = (flags & PARSE_APK_IN_APEX) != 0; final boolean canUseBackgroundPermissionAttr = "android".equals(packageName) || (Flags.replaceBodySensorPermissionEnabled() && isApkInApex); if (canUseBackgroundPermissionAttr) { permission.setBackgroundPermission(sa.getNonResourceString( R.styleable.AndroidManifestPermission_backgroundPermission)); } else { String allowedPackages = "'android'" + (Flags.replaceBodySensorPermissionEnabled() ? " and APK_IN_APEX" : ""); Slog.w(TAG, packageName + " defines a background permission. Only the " + "'android' package can do that."); + allowedPackages + " packages can do that."); } } Loading
core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java +3 −3 Original line number Diff line number Diff line Loading @@ -1090,7 +1090,7 @@ public class ParsingPackageUtils { case TAG_PERMISSION_GROUP: return parsePermissionGroup(input, pkg, res, parser); case TAG_PERMISSION: return parsePermission(input, pkg, res, parser); return parsePermission(input, pkg, res, parser, flags); case TAG_PERMISSION_TREE: return parsePermissionTree(input, pkg, res, parser); case TAG_USES_PERMISSION: Loading Loading @@ -1329,10 +1329,10 @@ public class ParsingPackageUtils { } private static ParseResult<ParsingPackage> parsePermission(ParseInput input, ParsingPackage pkg, Resources res, XmlResourceParser parser) ParsingPackage pkg, Resources res, XmlResourceParser parser, int flags) throws XmlPullParserException, IOException { ParseResult<ParsedPermission> result = ParsedPermissionUtils.parsePermission( pkg, res, parser, sUseRoundIcon, input); pkg, res, parser, sUseRoundIcon, input, flags); if (result.isError()) { return input.error(result); } Loading
core/res/res/values/public-staging.xml +3 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,9 @@ <public name="languageSettingsActivity"/> <!-- @FlaggedApi("android.service.controls.flags.Flags.FLAG_HOME_PANEL_DREAM") --> <public name="dreamCategory"/> <!-- @FlaggedApi("android.permission.flags.replace_body_sensor_permission_enabled") @hide @SystemApi --> <public name="backgroundPermission"/> </staging-public-group> <staging-public-group type="id" first-id="0x01b60000"> Loading