Отключить звук из NotificationChannel

Сегодня я начал настраивать API 26, что заставило меня использовать каналы уведомлений.

Моя проблема заключается в том, что теперь при каждом новом уведомлении (включая обновления) звучит раздражающий звук.

Как отключить этот звук?

Я попытался заменить этот звук обычным звуком mp3, чтобы затем передать ему mp3 с тишиной в нем (Иисус Христос, Google!), Но это игнорируется.

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

Пользователь действительно начнет раздражаться этим звуком.

Если вы хотите сохранить важность своего канала и просто удалить звуковое notificationChannel.setSound(null, null); похоже, выполняет эту работу.

Как заявил Daniel F, обязательно удалите и переустановите приложение, чтобы применить новую конфигурацию.

Решение состоит в том, чтобы использовать NotificationManager.IMPORTANCE_LOW и создать для него новый канал. Как только канал создается, вы не можете изменить значение (ну, вы можете, но новое значение игнорируется). Информация о канале, как представляется, постоянно сохраняется системой, и любой созданный канал удаляется только при удалении приложения.

В то время как предыдущие версии Android не воспроизводили звук по умолчанию, это изменилось с Android O, но только когда вы нацеливаете API 26, то есть используете каналы уведомлений. Это несогласованность, ну, на самом деле, это ошибка:

Причиной этого является то, что при создании канала с NotificationManager.IMPORTANCE_DEFAULT (по умолчанию он не заслуживает внимания) Android фактически «несколько» зарегистрирует его как NotificationManager.IMPORTANCE_HIGH (по умолчанию воспроизводит звук).

Вы можете проверить это, перейдя в параметры уведомлений (долго нажимайте на запись уведомления), где вы увидите, что он имеет тип NotificationManager.IMPORTANCE_HIGH а затем отключите уведомление и затем снова включите его. В этом процессе он получает «понижен» от NotificationManager.IMPORTANCE_HIGH до не звучащего, фактически зарегистрированного NotificationManager.IMPORTANCE_DEFAULT .

Ошибка была отправлена ​​на отслеживание проблем Android, поэтому вы можете захотеть ее загладить (помечен Google как «Не исправить (не подлежит)», потому что … испорченный).


Все, что находится под следующей строкой, устарело , но эта ошибка все еще актуальна. Моя ошибка заключалась в том, что NotificationManager.IMPORTANCE_MIN является следующей нижней из NotificationManager.IMPORTANCE_DEFAULT , но NotificationManager.IMPORTANCE_LOW .


Когда вы затем заходите в настройки уведомлений приложения с помощью кнопки long-press-notification и all-channels и переключаете переключатель для этого канала и включаете снова, тогда он фактически устанавливает себя NotificationManager.IMPORTANCE_DEFAULT и звук не будет воспроизводиться. Я также заметил, что после сбоя он получил сброс в NotificationManager.IMPORTANCE_HIGH

Поэтому в основном обходным путем является использование NotificationManager.IMPORTANCE_MIN . Но вам нужно создать новый канал, чтобы этот NotificationManager.IMPORTANCE_MIN действовал, потому что кажется, что вы не можете изменить важность уже существующего канала после его создания .

Обновление. Оказывается, обходной путь с NotificationManager.IMPORTANCE_MIN имеет недостаток.

Когда вы используете этот уровень важности, ваше уведомление больше не будет отображаться полностью внутри ящика уведомлений, но вставляет себя в новую группу каналов уведомлений, которая по умолчанию сворачивается (и сама рушится каждый раз при каждом вытягивании ящика). Какой облом!

Обновление 2: Копаем немного глубже, оказывается, что он правильно зарегистрировал его как NotificationManager.IMPORTANCE_DEFAULT , но каким-то образом он волшебным образом получил обновление до NotificationManager.IMPORTANCE_HIGH , как если бы пользователь явно менял настройку по умолчанию на высокий. После того, как вы отключили уведомление и снова включили его, он также будет сброшен до значения по умолчанию.

 NotificationManager.IMPORTANCE_LOW 

Он не создает звука при создании уведомлений, так как мне нужно то же самое в моем музыкальном приложении.

И да, если вы уже создали канал уведомлений, либо вам нужно изменить идентификатор канала, либо просто удалить предыдущее приложение и установить его снова.

Сначала вам нужно установить

  importance = NotificationManager.IMPORTANCE_LOW; 

тогда

 Notification n = builder.setPriority(Notification.DEFAULT_ALL).build(); n.defaults = 0; n.defaults |= Notification.DEFAULT_VIBRATE; 

ваша проблема. решена?

Я столкнулся с тем же вопросом в 8.1. Сделал следующее изменение. Cahnge – это уведомление о недопустимости уведомления как LOW, и оно отключит звук notificatioin

NotificationManager.IMPORTANCE_LOW

код выглядит так: NotificationChannel chan1 = new NotificationChannel (“default”, “default”, NotificationManager.IMPORTANCE_LOW);

  • Как реализовать устаревшие методы уведомления
  • Обновить текст уведомления, а не целое уведомление
  • Отсутствие права на уведомление Push Push
  • возобновление деятельности извещения
  • я хочу показать уведомление в 8:00 ежедневно
  • Уведомление Не показывать
  • getIntent () Дополнительно всегда NULL
  • Уведомления с несколькими линиями в Интернете, такие как приложение Gmail
  • PendingIntent работает правильно для первого уведомления, но неправильно для остальных
  • Android - создайте уведомление, TaskStackBuilder.addParentStack не работает
  • Откройте приложение после нажатия кнопки «Уведомление»
  • Давайте будем гением компьютера.