2010-05-15 3 views
10

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

ответ

34

Используйте 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

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

1

Я использовал программу 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()); 
-1
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);