这是在服务开始时发出通知的代码
NotificationCompat.Builder mbuild = new NotificationCompat.Builder(getApplicationContext());
Intent in = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent resultIN = PendingIntent.getActivity(getApplicationContext(),code,in,NOTIFICATION_COUNT); mbuild.setSmallIcon(R.drawable.images1);
mbuild.setContentText(NOTIFICATION_COUNT +" New Message");
mbuild.setContentIntent(resultIN); //mbuild.addAction(R.drawable.notifications,NOTIFICATION_COUNT +"New Messages",resultIN);
NotificationManager nmagr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nmagr.notify(1, mbuild.build());
每个人都正常工作..代码会打开目标活动,但通知仍会保留在通知栏中。 我尝试过使用mbuil.setautocancel(true);但它无所事事
答案 0 :(得分:8)
试试这个
NotificationManager nmagr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification=mbuild.build();
notification.flags = Notification.FLAG_AUTO_CANCEL;
nmagr.notify(1,notification);
答案 1 :(得分:2)
您没有设置setAutoCancel(true)
只需设置此
即可mbuild.setAutoCancel(true)
或强>
mbuild.getNotification().flags |= Notification.FLAG_AUTO_CANCEL
<强>更新强>
您也可以尝试以下代码。
NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
mgr.cancel(1); // here is "1" is your notification id which you set at "nmagr.notify(1, mbuild.build());"
在onCreate()
的{{1}}方法中编写上述代码。
答案 2 :(得分:1)
NotificationManager notification_manager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notification_manager.cancel(NOTIFICATION_ID);
答案 3 :(得分:0)
使用NotificationCompat和/或使用Notificaitoncompat.Builder对任何人进行更新。
这就是我的做法:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(title);
/* your own code here */
builder.setAutoCancel(true);
Notification notification = builder.build();
NotificationManagerCompat.from(this).notify(0,notification);
请务必注意,如果您使用待定意图将用户重定向到应用中的特定意图,则还会调用待处理意图。
根据文件:
设置此标志将使用户在用户单击面板时自动取消通知。取消通知时,将广播使用setDeleteIntent设置的PendingIntent。