我有一些代码可以创建一些通知,这是非常基本的。
int icon = R.drawable.notification;
CharSequence tickerText = "Text";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
Context context = getApplicationContext();
CharSequence contentTitle = "Text";
CharSequence contentText = "Text";
Intent notificationIntent = new Intent(this, RequestActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
notification.flags |= Notification.DEFAULT_SOUND;
notification.flags |= Notification.DEFAULT_VIBRATE;
notification.flags |= Notification.DEFAULT_LIGHTS;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
mNotificationManager.notify(notificationID, notification);
在2.1中一切正常。 在4.0中,除了滑动到解除操作不起作用外,一切正常。通知略微偏向一侧,然后反弹并反弹。 任何的想法? 感谢。
答案 0 :(得分:13)
您无法刷掉通知,因为它处于“ONGOING”状态。
首先是解决方案:
用以下代码替换设置标志:
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_LIGHTS;
notification.flags |= Notification.FLAG_AUTO_CANCEL;
默认值用于defaults-section,flags-section的标志。
现在它正在进行的原因是什么?
您可能已经知道通知的标志(和默认值)由bitwise operation设置。意味着每个标志都有一个常量值,它是2的幂。添加它们会产生一组标志的唯一编号,这样可以快速计算实际设置的标志。
Notification.DEFAULT_VIBRATE和Notification.FLAG_ONGOING_EVENT 具有相同的 2 的含义值。
答案 1 :(得分:5)
您应该使用 setOngoing (boolean ongoing)
设置这是否是"正在进行的"通知。正在进行的通知 不能被用户解雇,因此您的应用程序或服务必须 照顾取消它们。它们通常用于表示a 用户积极参与的后台任务(例如,播放 音乐)或以某种方式待决,因此占用设备 (例如,文件下载,同步操作,活动网络连接)。
您可以使用
.setOngoing(false);
答案 2 :(得分:0)
只需在发出通知时插入此行...
// Will show lights and make the notification disappear when the presses it
notification.flags == Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;