可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm trying to show a notification that has to be deleted when user tap on it. I'm using 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! Where I'm wrong?
回答1:
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.
回答2:
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.