我正在使用startForeground(id,notification)从意图服务创建通知。
Random r=new Random();
int id=r.nextInt(9999);
Builder notice2=new Notification.Builder(getApplicationContext())
.setContentTitle(call.getName())
.setAutoCancel(true)
.setContentIntent(intent)
.setContentText("content")
.setSmallIcon(com.project.calltracker.R.drawable.ic_alert)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), com.project.calltracker.R.drawable.ic_logo));
startForeground(id, notice2.getNotification());
这里我设置了AutoCancel(true)
但是当我点击通知时它不会消失??
我真的很困惑。我已经尝试了几个小时但仍然没有运气!
请帮忙!
谢谢!
答案 0 :(得分:12)
我从另一篇文章的答案中找到答案。基本上只有一个前台服务。使用startForeground()生成通知意味着只要此服务正在运行,就无法删除通知。
而是使用NotificationManager.notify()只生成通知。为此通知设置AutoCancel(true)会使其在滑动/单击时消失。
谢谢!
答案 1 :(得分:4)
您可以像这样修改代码,以便在点击时取消Notification
:
Random r=new Random();
int id=r.nextInt(9999);
Builder notice2=new Notification.Builder(getApplicationContext())
.setContentTitle(call.getName())
.setAutoCancel(true)
.setContentIntent((PendingIntent.getActivity(getApplicationContext(), id, intent, PendingIntent.FLAG_CANCEL_CURRENT))
.setContentText("content")
.setSmallIcon(com.project.calltracker.R.drawable.ic_alert)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), com.project.calltracker.R.drawable.ic_logo));
startForeground(id, notice2.getNotification());
我没有使用简单的Intent
,而是使用PendingIntent
和相应的标记设置来取消当前的Notification
。
以下是有关PendingIntent
:
答案 2 :(得分:0)
当服务仍处于前台时,AutoCancel不起作用。要允许通过滑动消除,必须调用stopForeground():
startForeground(id, notice2.getNotification());
stopForeground(false); //false - do not remove generated notification