2010-04-13 26 views
112

Jeśli wystąpiły problemy z powiadomieniem, które chcę wyświetlić na pasku powiadomień. Chociaż ustawiłem flagę powiadomienia na Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL, powiadomienie nie znika po kliknięciu. Jakieś pomysły, co robię źle?Powiadomienie na temat systemu Android nie znika po kliknięciu powiadomienia

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    int icon = R.drawable.icon; 
    CharSequence tickerText = "Ticker Text"; 
    long time = System.currentTimeMillis(); 

    Notification notification = new Notification(icon, tickerText, time); 
    notification.flags = Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL; 

    Context context = getApplicationContext(); 
    CharSequence contentTitle = "Title"; 
    CharSequence contentText = "Text"; 
    Intent notificationIntent = new Intent(this, SilentFlipConfiguration.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
    mNotificationManager.notify(1,notification); 

Odpowiedz

247

Podczas budowania Notification przez NotificationBuilder możesz użyć notificationBuilder.setAutoCancel(true);.

+0

Wielkie dzięki. To zadziałało dla mnie – Sakthimuthiah

+2

Więc, jakie różnice tworzą powiadomienie za pomocą Powiadomienia 'mNotificationManager.notify (1, powiadomienie);' i używając NotificationBuilder 'mNotificationManager.notify (1, mBuilder.build());'? Dzięki. – NPE

+9

Ta odpowiedź powinna zostać przyjęta, jest bardziej zgodna z obecną doktryną projektowania Androida. – jmaculate

126
notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL 

Z dokumentacji:

trochę do bitwise- lub ed w polu flagi, które powinny być ustawione jeśli notyfikacja powinna zostać anulowana, gdy zostanie kliknięty przez użytkownik:

+0

Och, człowieku, dzięki! Następnym razem będę lepiej czytał dokumentację. – Flo

+3

To nie jest poprawna odpowiedź. 'Notification.DEFAULT_LIGHTS' jest częścią klasy' Notification.defaults', a nie klasy "Notification.flags". Zobacz moją odpowiedź dla odpowiednich seterów. – Darcy

+0

Dziękuję, człowieku, pomogło mi –

27
// Uses the default lighting scheme 
notification.defaults |= Notification.DEFAULT_LIGHTS; 

// Will show lights and make the notification disappear when the presses it 
notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS; 
+1

Przeszedłem przez androida. Nie rozumiem, kiedy należy używać flag. Dlaczego po prostu powiadomienie.defaults = notification.DEFAULT_LIGHTS wystarczy pokazać światła. Ponieważ wibracje i dźwięk działają bez flagi. – Ashwin

+0

używam NotificationBuilder, NotificationCompat.Builder mBuilder = nowy NotificationCompat.Builder (this) .setSmallIcon (android.R.drawable.ic_popup_sync) .setContentTitle ("Nowy tweet") .setContentText ("Nie" + count + "tweety"); mBuilder.setDefaults (NotificationCompat.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL); – Joseph

0

użyć flagi Notification.FLAG_AUTO_CANCEL

Notification notification = new Notification(icon, tickerText, when); 

notification.setLatestEventInfo (kontekst, contentTitle, contentText, pendingIntent);

// Anuluj powiadomienie po wybranym powiadomieniu .flags | = Powiadomienie.FLAG_AUTO_CANCEL; i uruchomienie aplikacji:

Menedżer powiadomień NotManager = (NotificationManager) context.getSystemService (Context.NOTIFICATION_SERVICE);

Intent intent = new Intent(context, App.class); 

PendingIntent pendingIntent = PendingIntent.getActivity (kontekst intent_id zamiar, PendingIntent.FLAG_UPDATE_CURRENT);

Powiązane problemy