am 5e97c317: Merge "New NotificationListener API: getActiveNotifications()" into jb-mr2-dev
* commit '5e97c317e07a81bf5670292e2223e14eb610b0fd': New NotificationListener API: getActiveNotifications()
This commit is contained in:
@@ -21230,6 +21230,7 @@ package android.service.notification {
|
||||
ctor public NotificationListenerService();
|
||||
method public final void clearAllNotifications();
|
||||
method public final void clearNotification(java.lang.String, java.lang.String, int);
|
||||
method public android.service.notification.StatusBarNotification[] getActiveNotifications();
|
||||
method public android.os.IBinder onBind(android.content.Intent);
|
||||
method public abstract void onNotificationPosted(android.service.notification.StatusBarNotification);
|
||||
method public abstract void onNotificationRemoved(android.service.notification.StatusBarNotification);
|
||||
|
||||
@@ -46,4 +46,6 @@ interface INotificationManager
|
||||
|
||||
void clearNotificationFromListener(in INotificationListener token, String pkg, String tag, int id);
|
||||
void clearAllNotificationsFromListener(in INotificationListener token);
|
||||
|
||||
StatusBarNotification[] getActiveNotificationsFromListener(in INotificationListener token);
|
||||
}
|
||||
@@ -124,6 +124,21 @@ public abstract class NotificationListenerService extends Service {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request the list of outstanding notifications (that is, those that are visible to the
|
||||
* current user). Useful when starting up and you don't know what's already been posted.
|
||||
*
|
||||
* @return An array of active notifications.
|
||||
*/
|
||||
public StatusBarNotification[] getActiveNotifications() {
|
||||
try {
|
||||
return getNotificationInterface().getActiveNotificationsFromListener(mWrapper);
|
||||
} catch (android.os.RemoteException ex) {
|
||||
Log.v(TAG, "Unable to contact notification manager", ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
if (mWrapper == null) {
|
||||
|
||||
@@ -816,6 +816,30 @@ public class NotificationManagerService extends INotificationManager.Stub
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow an INotificationListener to request the list of outstanding notifications seen by
|
||||
* the current user. Useful when starting up, after which point the listener callbacks should
|
||||
* be used.
|
||||
*
|
||||
* @param token The binder for the listener, to check that the caller is allowed
|
||||
*/
|
||||
public StatusBarNotification[] getActiveNotificationsFromListener(INotificationListener token) {
|
||||
NotificationListenerInfo info = checkListenerToken(token);
|
||||
|
||||
StatusBarNotification[] result = new StatusBarNotification[0];
|
||||
ArrayList<StatusBarNotification> list = new ArrayList<StatusBarNotification>();
|
||||
synchronized (mNotificationList) {
|
||||
final int N = mNotificationList.size();
|
||||
for (int i=0; i<N; i++) {
|
||||
StatusBarNotification sbn = mNotificationList.get(i).sbn;
|
||||
if (info.enabledAndUserMatches(sbn)) {
|
||||
list.add(sbn);
|
||||
}
|
||||
}
|
||||
}
|
||||
return list.toArray(result);
|
||||
}
|
||||
|
||||
// -- end of listener APIs --
|
||||
|
||||
public static final class NotificationRecord
|
||||
|
||||
Reference in New Issue
Block a user