diff --git a/api/current.txt b/api/current.txt index 25801cac203e4..7c13dc1293c11 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5842,12 +5842,19 @@ package android.app { method public boolean updateAutomaticZenRule(String, android.app.AutomaticZenRule); field public static final String ACTION_APP_BLOCK_STATE_CHANGED = "android.app.action.APP_BLOCK_STATE_CHANGED"; field public static final String ACTION_AUTOMATIC_ZEN_RULE = "android.app.action.AUTOMATIC_ZEN_RULE"; + field public static final String ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED = "android.app.action.AUTOMATIC_ZEN_RULE_STATUS_CHANGED"; field public static final String ACTION_INTERRUPTION_FILTER_CHANGED = "android.app.action.INTERRUPTION_FILTER_CHANGED"; field public static final String ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED"; field public static final String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED"; field public static final String ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED = "android.app.action.NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED"; field public static final String ACTION_NOTIFICATION_POLICY_CHANGED = "android.app.action.NOTIFICATION_POLICY_CHANGED"; + field public static final int AUTOMATIC_RULE_STATUS_DISABLED = 2; // 0x2 + field public static final int AUTOMATIC_RULE_STATUS_ENABLED = 1; // 0x1 + field public static final int AUTOMATIC_RULE_STATUS_REMOVED = 3; // 0x3 + field public static final int AUTOMATIC_RULE_STATUS_UNKNOWN = -1; // 0xffffffff field public static final String EXTRA_AUTOMATIC_RULE_ID = "android.app.extra.AUTOMATIC_RULE_ID"; + field public static final String EXTRA_AUTOMATIC_ZEN_RULE_ID = "android.app.extra.AUTOMATIC_ZEN_RULE_ID"; + field public static final String EXTRA_AUTOMATIC_ZEN_RULE_STATUS = "android.app.extra.AUTOMATIC_ZEN_RULE_STATUS"; field public static final String EXTRA_BLOCKED_STATE = "android.app.extra.BLOCKED_STATE"; field public static final String EXTRA_NOTIFICATION_CHANNEL_GROUP_ID = "android.app.extra.NOTIFICATION_CHANNEL_GROUP_ID"; field public static final String EXTRA_NOTIFICATION_CHANNEL_ID = "android.app.extra.NOTIFICATION_CHANNEL_ID"; diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index c1cee77be16d9..316cab8d600b4 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -170,6 +170,78 @@ public class NotificationManager { public static final String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED = "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED"; + /** + * Intent that is broadcast when the status of an {@link AutomaticZenRule} has changed. + * + *
Use this to know whether you need to continue monitor to device state in order to + * provide up-to-date states (with {@link #setAutomaticZenRuleState(String, Condition)}) for + * this rule.
+ * + * Input: nothing + * Output: {@link #EXTRA_AUTOMATIC_ZEN_RULE_ID} + * Output: {@link #EXTRA_AUTOMATIC_ZEN_RULE_STATUS} + */ + @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED = + "android.app.action.AUTOMATIC_ZEN_RULE_STATUS_CHANGED"; + + /** + * Integer extra for {@link #ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED} containing the state of + * the {@link AutomaticZenRule}. + * + *+ * The value will be one of {@link #AUTOMATIC_RULE_STATUS_ENABLED}, + * {@link #AUTOMATIC_RULE_STATUS_DISABLED}, {@link #AUTOMATIC_RULE_STATUS_REMOVED}, + * {@link #AUTOMATIC_RULE_STATUS_UNKNOWN}. + *
+ */ + public static final String EXTRA_AUTOMATIC_ZEN_RULE_STATUS = + "android.app.extra.AUTOMATIC_ZEN_RULE_STATUS"; + + /** + * String extra for {@link #ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED} containing the id of the + * {@link AutomaticZenRule} (see {@link #addAutomaticZenRule(AutomaticZenRule)}) that has + * changed. + */ + public static final String EXTRA_AUTOMATIC_ZEN_RULE_ID = + "android.app.extra.AUTOMATIC_ZEN_RULE_ID"; + + /** @hide */ + @IntDef(prefix = { "AUTOMATIC_RULE_STATUS" }, value = { + AUTOMATIC_RULE_STATUS_ENABLED, AUTOMATIC_RULE_STATUS_DISABLED, + AUTOMATIC_RULE_STATUS_REMOVED, AUTOMATIC_RULE_STATUS_UNKNOWN + }) + @Retention(RetentionPolicy.SOURCE) + public @interface AutomaticZenRuleStatus {} + + /** + * Constant value for {@link #EXTRA_AUTOMATIC_ZEN_RULE_STATUS} - the current status of the + * rule is unknown at your target sdk version, and you should continue to provide state changes + * via {@link #setAutomaticZenRuleState(String, Condition)}. + */ + public static final int AUTOMATIC_RULE_STATUS_UNKNOWN = -1; + + /** + * Constant value for {@link #EXTRA_AUTOMATIC_ZEN_RULE_STATUS} - the given rule currently + * exists and is enabled. You should continue to provide state changes via + * {@link #setAutomaticZenRuleState(String, Condition)}. + */ + public static final int AUTOMATIC_RULE_STATUS_ENABLED = 1; + + /** + * Constant value for {@link #EXTRA_AUTOMATIC_ZEN_RULE_STATUS} - the given rule currently + * exists but is disabled. You do not need to continue to provide state changes via + * {@link #setAutomaticZenRuleState(String, Condition)} until the rule is reenabled. + */ + public static final int AUTOMATIC_RULE_STATUS_DISABLED = 2; + + /** + * Constant value for {@link #EXTRA_AUTOMATIC_ZEN_RULE_STATUS} - the given rule has been + * deleted. Further calls to {@link #setAutomaticZenRuleState(String, Condition)} will be + * ignored. + */ + public static final int AUTOMATIC_RULE_STATUS_REMOVED = 3; + /** * Intent that is broadcast when the state of {@link #getEffectsSuppressor()} changes. * This broadcast is only sent to registered receivers. diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 119d5ea33dc3e..ebf5b9306c4aa 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -536,6 +536,7 @@