diff --git a/api/current.txt b/api/current.txt index 521a2c365c2e5..dd9b5a1ef284f 100644 --- a/api/current.txt +++ b/api/current.txt @@ -34425,6 +34425,39 @@ package android.service.notification { field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.ConditionProviderService"; } + public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService { + ctor public NotificationAssistantService(); + method public final void adjustImportance(java.lang.String, android.service.notification.NotificationAssistantService.Adjustment); + method public final void clearAnnotation(java.lang.String); + method public void onNotificationActionClick(java.lang.String, long, int); + method public void onNotificationClick(java.lang.String, long); + method public abstract android.service.notification.NotificationAssistantService.Adjustment onNotificationEnqueued(android.service.notification.StatusBarNotification, int, boolean); + method public void onNotificationRemoved(java.lang.String, long, int); + method public void onNotificationVisibilityChanged(java.lang.String, long, boolean); + method public final void setAnnotation(java.lang.String, android.app.Notification); + field public static final int REASON_APP_CANCEL = 8; // 0x8 + field public static final int REASON_APP_CANCEL_ALL = 9; // 0x9 + field public static final int REASON_DELEGATE_CANCEL = 2; // 0x2 + field public static final int REASON_DELEGATE_CANCEL_ALL = 3; // 0x3 + field public static final int REASON_DELEGATE_CLICK = 1; // 0x1 + field public static final int REASON_DELEGATE_ERROR = 4; // 0x4 + field public static final int REASON_GROUP_OPTIMIZATION = 13; // 0xd + field public static final int REASON_GROUP_SUMMARY_CANCELED = 12; // 0xc + field public static final int REASON_LISTENER_CANCEL = 10; // 0xa + field public static final int REASON_LISTENER_CANCEL_ALL = 11; // 0xb + field public static final int REASON_PACKAGE_BANNED = 7; // 0x7 + field public static final int REASON_PACKAGE_CHANGED = 5; // 0x5 + field public static final int REASON_PACKAGE_SUSPENDED = 15; // 0xf + field public static final int REASON_PROFILE_TURNED_OFF = 16; // 0x10 + field public static final int REASON_TOPIC_BANNED = 14; // 0xe + field public static final int REASON_USER_STOPPED = 6; // 0x6 + field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService"; + } + + public class NotificationAssistantService.Adjustment { + ctor public NotificationAssistantService.Adjustment(int, java.lang.CharSequence, android.net.Uri); + } + public abstract class NotificationListenerService extends android.app.Service { ctor public NotificationListenerService(); method public final void cancelAllNotifications(); diff --git a/api/system-current.txt b/api/system-current.txt index 803fbeb6c8f20..ef4841e8fb4e1 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -36839,11 +36839,13 @@ package android.service.notification { public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService { ctor public NotificationAssistantService(); method public final void adjustImportance(java.lang.String, android.service.notification.NotificationAssistantService.Adjustment); + method public final void clearAnnotation(java.lang.String); method public void onNotificationActionClick(java.lang.String, long, int); method public void onNotificationClick(java.lang.String, long); method public abstract android.service.notification.NotificationAssistantService.Adjustment onNotificationEnqueued(android.service.notification.StatusBarNotification, int, boolean); method public void onNotificationRemoved(java.lang.String, long, int); method public void onNotificationVisibilityChanged(java.lang.String, long, boolean); + method public final void setAnnotation(java.lang.String, android.app.Notification); field public static final int REASON_APP_CANCEL = 8; // 0x8 field public static final int REASON_APP_CANCEL_ALL = 9; // 0x9 field public static final int REASON_DELEGATE_CANCEL = 2; // 0x2 diff --git a/api/test-current.txt b/api/test-current.txt index 140f1b8ea42ee..80d82c3d84ffa 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -34440,6 +34440,39 @@ package android.service.notification { field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.ConditionProviderService"; } + public abstract class NotificationAssistantService extends android.service.notification.NotificationListenerService { + ctor public NotificationAssistantService(); + method public final void adjustImportance(java.lang.String, android.service.notification.NotificationAssistantService.Adjustment); + method public final void clearAnnotation(java.lang.String); + method public void onNotificationActionClick(java.lang.String, long, int); + method public void onNotificationClick(java.lang.String, long); + method public abstract android.service.notification.NotificationAssistantService.Adjustment onNotificationEnqueued(android.service.notification.StatusBarNotification, int, boolean); + method public void onNotificationRemoved(java.lang.String, long, int); + method public void onNotificationVisibilityChanged(java.lang.String, long, boolean); + method public final void setAnnotation(java.lang.String, android.app.Notification); + field public static final int REASON_APP_CANCEL = 8; // 0x8 + field public static final int REASON_APP_CANCEL_ALL = 9; // 0x9 + field public static final int REASON_DELEGATE_CANCEL = 2; // 0x2 + field public static final int REASON_DELEGATE_CANCEL_ALL = 3; // 0x3 + field public static final int REASON_DELEGATE_CLICK = 1; // 0x1 + field public static final int REASON_DELEGATE_ERROR = 4; // 0x4 + field public static final int REASON_GROUP_OPTIMIZATION = 13; // 0xd + field public static final int REASON_GROUP_SUMMARY_CANCELED = 12; // 0xc + field public static final int REASON_LISTENER_CANCEL = 10; // 0xa + field public static final int REASON_LISTENER_CANCEL_ALL = 11; // 0xb + field public static final int REASON_PACKAGE_BANNED = 7; // 0x7 + field public static final int REASON_PACKAGE_CHANGED = 5; // 0x5 + field public static final int REASON_PACKAGE_SUSPENDED = 15; // 0xf + field public static final int REASON_PROFILE_TURNED_OFF = 16; // 0x10 + field public static final int REASON_TOPIC_BANNED = 14; // 0xe + field public static final int REASON_USER_STOPPED = 6; // 0x6 + field public static final java.lang.String SERVICE_INTERFACE = "android.service.notification.NotificationAssistantService"; + } + + public class NotificationAssistantService.Adjustment { + ctor public NotificationAssistantService.Adjustment(int, java.lang.CharSequence, android.net.Uri); + } + public abstract class NotificationListenerService extends android.app.Service { ctor public NotificationListenerService(); method public final void cancelAllNotifications(); diff --git a/core/java/android/service/notification/NotificationAssistantService.java b/core/java/android/service/notification/NotificationAssistantService.java index fb58f4e519c30..a56e0301840fa 100644 --- a/core/java/android/service/notification/NotificationAssistantService.java +++ b/core/java/android/service/notification/NotificationAssistantService.java @@ -45,9 +45,7 @@ import android.util.Log; * <action android:name="android.service.notification.NotificationAssistantService" /> * </intent-filter> * </service> - * @hide */ -@SystemApi public abstract class NotificationAssistantService extends NotificationListenerService { private static final String TAG = "NotificationAssistant"; @@ -212,6 +210,29 @@ public abstract class NotificationAssistantService extends NotificationListenerS } } + /** + * Add an annotation to a an existing notification. The delete intent will + * be fired when the host notification is deleted, or when this annotation + * is removed or replaced. + * + * @param key the key of the notification to be annotated + * @param annotation the new annotation object + */ + public final void setAnnotation(String key, Notification annotation) + { + // TODO: pack up the annotation and send it to the NotificationManager. + } + + /** + * Remove the annotation from a notification. + * + * @param key the key of the notification to be cleansed of annotatons + */ + public final void clearAnnotation(String key) + { + // TODO: ask the NotificationManager to clear the annotation. + } + private class NotificationAssistantWrapper extends NotificationListenerWrapper { @Override public void onNotificationEnqueued(IStatusBarNotificationHolder sbnHolder, diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java index 7ff883e1d1270..ed90e795af006 100644 --- a/core/java/android/service/notification/NotificationListenerService.java +++ b/core/java/android/service/notification/NotificationListenerService.java @@ -695,7 +695,7 @@ public abstract class NotificationListenerService extends Service { /** * Request that the listener be rebound, after a previous call to (@link requestUnbind). * - *
This method will fail for listeners that have + *
This method will fail for assistants that have * not been granted the permission by the user. * *
The service should wait for the {@link #onListenerConnected()} event @@ -1022,7 +1022,8 @@ public abstract class NotificationListenerService extends Service { } /** - * If the importance has been overriden by user preference, then this will be non-null, + * If the importance has been overriden by user preference, or by a + * {@link NotificationAssistantService}, then this will be non-null, * and should be displayed to the user. * * @return the explanation for the importance, or null if it is the natural importance