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

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

Есть способ скрыть его?

Ответ 1

Начиная с 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 для NotificationChannel как IMPORTANCE_MIN:

NotificationChannel channel = 
      new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_MIN);
notificationManager.createNotificationChannel(channel);
...
builder.setChannelId(channel.getId())

Ответ 2

.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();

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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

проверьте этот ответ более подробно.