Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Notification setAutoCancel(true) doesn't work

I'm trying to show a notification that is removed when the user taps on it. I'm using the NotificationCompat class to build my notification and I call setAutoCancel(true) on my builder. This is the piece of code:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)         .setSmallIcon(R.drawable.ic_launcher)         .setContentTitle("title")         .setAutoCancel(true)         .setContentText("content"); NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, mBuilder.build()); 

The notification is correctly added but when I tap on it nothing happens! What am I doing wrong?

like image 892
TheModularMind Avatar asked Feb 22 '13 21:02

TheModularMind


2 Answers

Using setContentIntent should solve your problem:

.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0)); 

In your example:

NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(this)         .setSmallIcon(R.drawable.notification_icon)         .setContentTitle("title")         .setAutoCancel(true)         .setContentText("content")         .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0)); NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, mBuilder.build()); 

Often you might want to direct the user to the relevant content and so might replace 'new Intent()' with something else.

I uploaded a demo to github.

like image 90
snodnipper Avatar answered Oct 27 '22 00:10

snodnipper


I know an answer has already been accepted, but I had the same problem with a different solution so I will share it here.

For me, I was using the same NotificationCompat.Builder object to create a notification which called setOngoing(true). This was for an upload progress notification which should not be removed while working.

Anyways, after the task was complete, I called setAutoCancel(true) but the notification was still not swiping away. What I had to do also was call setOngoing(false).

It seems pretty obvious now, but it might save someone else some time in the future.

like image 22
JMRboosties Avatar answered Oct 26 '22 23:10

JMRboosties