Удалить значок уведомления из строки состояния

Я показываю значок в строке состояния. Теперь я хочу удалить этот значок сразу, когда я открою этот контент, через какое-то время, если мы получим какое-либо предупреждение, этот значок будет отображаться снова. Как я могу это сделать?

Ответ 1

Используйте NotificationManager, чтобы отменить свое уведомление. Вам нужно только указать идентификатор вашего уведомления.

https://developer.android.com/reference/android/app/NotificationManager.html

private static final int MY_NOTIFICATION_ID= 1234;
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager;
mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(MY_NOTIFICATION_ID, notification);

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

Отменить:

mNotificationManager.cancel(MY_NOTIFICATION_ID);

Ответ 2

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

Ответ 3

Я использовал программу Builder, чтобы вы могли просто установить автоматическое отключение от установщика setAutoCancel(true). Это выглядит примерно так:

    String title = "Requests"; 
    String msg = "New requests available.";
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.ic_gcm_icon)
                    .setContentTitle(title)
                    .setAutoCancel(true)
                    .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(msg))
                    .setContentText(msg);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

Ответ 4

Intent resultIntent = new Intent(application, MainActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent resultPendingIntent = PendingIntent.getActivity(application, 0, resultIntent, 0);
NotificationManager nmgr = (NotificationManager) application.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(application)
            .setSmallIcon(R.drawable.icon_battery)
            .setContentTitle(application.getString(R.string.app_name))
            .setContentText("your text")
            .setOnlyAlertOnce(false)
            .setAutoCancel(true)
            .setTicker("your ticker")
            .setDefaults(Notification.DEFAULT_SOUND  ) //| Notification.DEFAULT_VIBRATE
            .setContentIntent(resultPendingIntent)
            .setVisibility(VISIBILITY_SECRET)
            .setPriority(Notification.PRIORITY_MIN);

Notification mNotification = mBuilder.build();
//  mNotification.flags |= FLAG_NO_CLEAR;
nmgr.notify(0, mNotification);