单击通知后,Android通知不会消失


132

如果通知有问题,我想显示在通知栏中。尽管我将通知标记设置为Notification.DEFAULT_LIGHTS & Notification.FLAG_AUTO_CANCEL,单击通知后通知不会消失。有什么想法我做错了吗?

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);

Answers:


304

同时建立NotificationNotificationBuilder可以使用notificationBuilder.setAutoCancel(true);


2
那么,使用Notification mNotificationManager.notify(1,notification);和NotificationBuilder 创建通知有什么区别mNotificationManager.notify(1, mBuilder.build());?谢谢。
Yohanes AI

9
这个答案应该被接受,它更符合当前的android设计原则
jmaculate 2014年

这个答案是正确的。接受一件作品,但并非总是如此。当GCM上堆积了通知时(或您正在使用的任何东西),就会出现问题。ping通知服务器后,它会返回很多通知,有时会循环显示通知。
Nikola Milutinovic

5
notificationBuilder.setAutoCancel(true);对我不起作用。我应该把待定意向放在首位吗?
Kairi San

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

从文档中:

如果在用户单击通知时取消通知,则应按位将其设置到标志字段中应设置的位


3
这不是正确的答案。Notification.DEFAULT_LIGHTSNotification.defaults班级的一部分,而不是Notification.flags班级的一部分。请参阅我的答案以了解适当的设置者。
达西2012年

notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; 这种方法正在工作,谢谢辛迪克。
Ravikumar

1
此答案中的代码导致通知声音被多次播放。查看其他答案。
ban-geoengineering

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
我已经通过了android docs。我不太明白何时应该使用标志。为什么notification.defaults = notification.DEFAULT_LIGHTS不足以显示灯光。因为振动和声音不会发出信号。
阿什温

我正在使用NotificationBuilder,NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(android.R.drawable.ic_popup_sync).setContentTitle(“ New Tweet”).setContentText(“ There are” + count +“ tweets”) ; mBuilder.setDefaults(NotificationCompat.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL);
约瑟夫



1

使用标志Notification.FLAG_AUTO_CANCEL

Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, pendingIntent);

// Cancel the notification after its selected
notification.flags |= Notification.FLAG_AUTO_CANCEL;

并启动该应用程序:

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

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

PendingIntent pendingIntent = PendingIntent.getActivity(context, intent_id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

0

删除通知

通知保持可见,直到发生以下情况之一:

  1. 用户关闭该通知。
  2. 用户单击通知,然后在创建通知时调用setAutoCancel()。
  3. 您为特定的通知ID调用cancel()。此方法还删除正在进行的通知。
  4. 您调用cancelAll(),它将删除先前发出的所有通知。
  5. 如果使用setTimeoutAfter()创建通知时设置了超时,则系统会在经过指定的持续时间后取消通知。如果需要,您可以在指定的超时时间过去之前取消通知。

有关更多详细信息,请参见:https : //developer.android.com/training/notify-user/build-notification?hl=zh-CN

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.