Android NotificationListernerService-如何从whatsapp堆叠通知中消除单个通知

时间:2018-11-18 13:18:14

标签: android

我已经编写了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());
            }
        }
    }
}

0 个答案:

没有答案