Уведомление setAutoCancel (true) не работает
Я пытаюсь показать уведомление, которое нужно удалить, когда пользователь нажимает на него.
Я использую класс NotificationCompat
для создания моего уведомления, и я вызываю setAutoCancel(true)
на мой builder
. Это фрагмент кода:
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());
Уведомление правильно добавлено, но когда я нажимаю на него, ничего не происходит! Где я ошибаюсь?
Ответы
Ответ 1
Использование setContentIntent должно решить вашу проблему:
.setContentIntent(PendingIntent.getActivity(this, 0, new Intent(), 0));
В вашем примере:
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());
Часто вы можете направить пользователя к соответствующему контенту и, таким образом, заменить "новый Intent()" на что-то еще.
Я загрузил demo в github.
Ответ 2
Я знаю, что ответ уже принят, но у меня была та же проблема с другим решением, поэтому я расскажу об этом здесь.
Для меня я использовал один и тот же объект NotificationCompat.Builder
для создания уведомления, которое называется setOngoing(true)
. Это было для уведомления о ходе загрузки, которое не должно быть удалено во время работы.
В любом случае, после завершения задачи, я позвонил setAutoCancel(true)
, но уведомление все еще не исчезло. Мне также нужно было позвонить setOngoing(false)
.
Теперь это выглядит довольно очевидно, но в будущем это может спасти кого-то еще.