Я показываю значок в строке состояния. Теперь я хочу удалить этот значок сразу, когда я открою этот контент, через какое-то время, если мы получим какое-либо предупреждение, этот значок будет отображаться снова. Как я могу это сделать?
Удалить значок уведомления из строки состояния
Ответ 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);