Удалить значок уведомления из строки состояния - PullRequest
11 голосов
/ 15 мая 2010

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

Ответы [ 4 ]

36 голосов
/ 15 мая 2010

Используйте 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);
15 голосов
/ 11 июня 2011

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

1 голос
/ 11 июля 2014

Я использовал скороговорку 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());
0 голосов
/ 01 июня 2017
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...