Уведомление об удалении Android (созданное mNotifyBuilder) при нажатии

Я нашел много ответов на это, но никто не помог:( У меня есть этот код:

private static void generateNotification(Context context, String message) {
    int icon = R.drawable.icon;
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    int notifyID = 96;
    NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(context)
        .setContentTitle("MyApp")
        .setContentText(message)
        .setDefaults(Notification.DEFAULT_ALL)
        .setAutoCancel(true)
        .setSmallIcon(icon);

    Notification notification = mNotifyBuilder.build();
    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    mNotificationManager.notify(notifyID, notification);
}

Но если я нажимаю на уведомление, ничего не происходит, и он все еще там. В документации есть, что мне нужно использовать:

.setAutoCancel(true)

У кого-то есть аналогичная проблема, и кто-то говорит ему:

notification.flags |= Notification.FLAG_AUTO_CANCEL;

Я использую оба, но никакого результата:( Большое спасибо за ответы.:)

Ответ 1

Я думаю, что если вы не используете намерение с вашим уведомлением, единственный способ отклонить его, чтобы пронести его.

В противном случае вы можете использовать намерение, чтобы открыть свою активность, и это действительно очистит уведомление:

Intent showIntent = new Intent(this, YourActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, showIntent, 0);

И добавить его в уведомление:

NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(context)
    .setContentTitle("MyApp")
    .setContentText(message)
    .setDefaults(Notification.DEFAULT_ALL)
    .setAutoCancel(true)
    .setContentIntent(contentIntent)
    .setSmallIcon(icon);

Надеюсь, это поможет!

Ответ 2

Пользователь может отклонить все уведомления или установить автоматическое отмена уведомления, а также удалить его после выбора пользователем.

Вы также можете вызвать функцию cancel() для определенного идентификатора уведомления в NotificationManager. Вызов метода cancelAll() удаляет все уведомления, которые вы ранее выдавали.

Пример:

mNotificationManager.cancel(notifyId);

Ответ 3

просто используйте эту строку внутри кнопки onclick event -

mNotificationManager.cancel(notifyId);//id is that u used for notification

Ответ 4

просто добавьте

 Intent showIntent = new Intent();
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0, showIntent, 0);


    myNotification = new Notification.Builder(getApplicationContext())
                    .setContentTitle("Title")
                    .setContentText("Text")
                    .setTicker("notificatio")
                    .setContentIntent(contentIntent)
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setAutoCancel(true)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .build();

добавить пустые ожидающие намерения, затем щелкнуть по уведомлению, уведомление будет удалено. он работает для меня.