我有一个包含2个操作的通知。一个意图打开一个Activity,另一个打开浏览器网站。
我的代码:
Intent intent1 = new Intent(context, NotificationClickActivity.class);
PendingIntent pIntent1 = PendingIntent.getActivity(context, 0, intent1, PendingIntent.FLAG_CANCEL_CURRENT);
String url = "http://www.google.com";
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(url));
PendingIntent pBrowserIntent = PendingIntent.getActivity(context, 1, browserIntent, PendingIntent.FLAG_CANCEL_CURRENT);
// Build notification
Notification noti = new Notification.Builder(context)
.setContentTitle(title)
.setContentText(shortDescription)
.setStyle(new Notification.BigTextStyle().bigText(longDescription))
.setSmallIcon(R.drawable.small_defaulticon)
.setAutoCancel(true)
.setContentIntent(pIntent1)
.addAction(R.drawable.playstore_icon_32, "Dettagli", pIntent1)
.setContentIntent(pBrowserIntent)
.addAction(R.drawable.small_defaulticon, "Vai al sito", pBrowserIntent).build();
NotificationManager notificationManager =
(NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after its selected
noti.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, noti);
如果我点击通知它会消失,但如果我点击其中一个动作,它会打开正确的意图,但通知不会被清除。
我也尝试.setDeleteIntent(myPendingIntent)
,但没有......我想知道我哪里出错...
我的通知屏幕......
谢谢!
答案 0 :(得分:4)
按下操作按钮时,通知永远不会被解除。它只是向您发送相关的意图。如果您希望将其解雇,则需要致电NoficationManager.cancel(int id)
以自行取消。您通常会使用相同的方法来处理动作按钮意图。
Notification.FLAG_AUTO_CANCEL
标志仅适用于通知正文,而不适用于操作按钮。
答案 1 :(得分:1)
在您的操作启动的活动中使用cancel()来取消通知
答案 2 :(得分:0)
试试这个
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setDefaults(Notification.DEFAULT_ALL);
并尝试在notificationManager.notify(uniqueId, noti);