Как создать уведомление без значка в статусбаре или просто его скрыть?

Я хотел бы знать, как создать уведомление, которое не отображает значок в строке состояния.

Есть способ скрыть это?


person Meroelyth    schedule 07.07.2012    source источник
comment
используйте прозрачное изображение тогда ..   -  person Daud Arfin    schedule 07.07.2012
comment
Вы имеете в виду, что вам нужен только текст уведомления или вообще ничего на панели уведомлений, но только когда вы ее опускаете?   -  person Alabhya    schedule 07.07.2012
comment
возможный дубликат Android, как скрыть NotificationCompat.Builder значок уведомления в строке состояния?   -  person Dhaval Parmar    schedule 08.06.2013


Ответы (5)


Начиная с Android 4.1 (уровень API 16) можно указать priority. Если вы установите для этого флага значение PRIORITY_MIN, значок уведомления не будет отображаться в строке состояния.

notification.priority = Notification.PRIORITY_MIN;

Или, если вы используете Notification.Builder:

builder.setPriority(Notification.PRIORITY_MIN);

Начиная с Android 8.0 Oreo (уровень API 26) вы должны установить importance уведомления NotificationChannel на IMPORTANCE_MIN:

NotificationChannel channel = 
      new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_MIN);
notificationManager.createNotificationChannel(channel);
...
builder.setChannelId(channel.getId())
person Floern    schedule 08.06.2013
comment
Работает ли он на Android 8+ с новой системой каналов уведомлений? - person kolombo; 16.11.2017
comment
@KoenVanLooveren Я обновил сообщение, включив в него необходимые настройки для Android 8+. - person Floern; 14.01.2018
comment
Нет, иконка не прячется на Android 8+. Он просто добавлен в нижней части моего стека уведомлений. - person Koen Van Looveren; 15.01.2018

.setPriority с параметром PRIORITY_MIN сделает это возможным.

NotificationCompat notification = new NotificationCompat.Builder(this)
                .setContentTitle(getString(R.string.app_name))
                .setContentText(getString(R.string.notification_text))
                .setSmallIcon(R.mipmap.ic_launcher)

                //Show the notification only in NotificationDrawer.
                //Notification will not be shown on LockScreen as well as Hidden Icon on StatusBar.
                .setPriority(Notification.PRIORITY_MIN)

                .build();
person zackygaurav    schedule 19.02.2016
comment
какой ответ от @Floern? - person Vladyslav Matviienko; 14.11.2016
comment
@VladMatvienko Mine — это полный код на случай, если он понадобится новичку. - person zackygaurav; 15.11.2016
comment
Это было не вчера, пока ты не отредактировал это 27 мин. назад - person Vladyslav Matviienko; 15.11.2016

NotificationManager.IMPORTANCE_UNSPECIFIED работает в моем случае

person RoyBS    schedule 24.06.2019
comment
Удивительно! И это еще лучше! Остается скрытым внизу и должен быть открыт, чтобы показать все. Идеально. Спасибо! Не ожидал такого от неуказанного xD. - person DADi590; 29.04.2021

Вы можете сделать это, имея полностью прозрачное изображение и использовать его в качестве значка. :)

person Aqif Hamid    schedule 07.07.2012
comment
Спасибо, но я не хочу занимать место в строке состояния. Может быть, нет способа... - person Meroelyth; 07.07.2012

невозможно отобразить уведомление без значка.

You can use transparent image. But, it take space of icon.

@CommonsWare: поскольку основной целью создания уведомления является размещение значка в строке состояния, обычно нет необходимости не помещать значок в строку состояния, если только он не является интерактивным, например переключателем или информационным уведомлением, которое будет всегда работает, и вы можете захотеть вытащить, но не имеет смысла для значка.

подробности см. в этом ответе.

person Dhaval Parmar    schedule 08.06.2013