我已经编写了NotificationListerService来获取所有通知并将其显示在我的应用中。 我还使用cancelNotification()关闭通知。 我的问题是与Whatsapp堆叠式通知有关,我无法获得一个被驳回的通知,它们在onNotificationPosted中不断“返回”。 例如,假设我有2个不同号码的2条未读通知,如果我关闭其中一个,然后从另一个号码(我没有关闭的那个号码)中收到另一条消息,则比onNotificationPosted我又收到2条消息-新的和被解雇的。
@Override
public void onListenerConnected() {
Log.d(TAG, "Got onListenerConnected");
super.onListenerConnected();
onNotificationChanged();
}
private void onNotificationChanged() {
Log.d(TAG, "onNotificationChanged");
// Update the active notifications list
activeNotifications = getActiveNotifications();
// Notify to listeners
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(new Intent("notification_changed"));
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
Log.d(TAG, "onNotificationPosted");
onNotificationChanged();
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
Log.d(TAG, "onNotificationRemoved");
}
public final void deleteNotificationFromNotificationBar(Model m)
{
StatusBarNotification[] sbns = getActiveNotifications();
for (StatusBarNotification sbn : sbns)
{
if (sbn.getKey().equals(m.getKeyName()))
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
super.cancelNotification(sbn.getKey());
}
else
{
super.cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
}
}
}