vibracion teclado sonido quitar notificaciones gusta dar cómo como cambiar android notifications

android - teclado - cómo quitar el sonido de me gusta en facebook



Deshabilitar sonido de NotificationChannel (10)

(Actualización 2019-05: empeora con Android Q, incluso recibo un sonido cuando uso NotificationManager.IMPORTANCE_LOW , al menos en el emulador ...)

La solución es usar NotificationManager.IMPORTANCE_LOW y crear un nuevo canal para ello. Una vez que se crea un canal, no se puede cambiar la importancia (bueno, se puede, pero se ignora la nueva importancia). La información del canal parece ser almacenada permanentemente por el sistema y cualquier canal creado solo se elimina cuando desinstala la aplicación. [ Actualización : según el comentario de Ferran Negre , puede eliminar el canal a través de nm.deleteNotificationChannel(nChannel.getId()); y recrearlo con nm.createNotificationChannel(nChannel); pero aparentemente hay una limitación de que no puede crear un canal con la misma identificación de un canal eliminado y esperar poder aplicar diferentes configuraciones al canal no borrado, vea la respuesta del acoder ]

Si bien las versiones anteriores de Android no reproducían sonido de forma predeterminada, esto cambió con Android O, pero solo cuando se dirige a la API 26, es decir, utiliza los canales de notificación. Esto es una inconsistencia, bueno, en realidad, es un error:

La razón de esto es que cuando creas un canal con NotificationManager.IMPORTANCE_DEFAULT (no es apto para el sonido por defecto) Android en realidad "algo" lo registrará como NotificationManager.IMPORTANCE_HIGH (reproduce el sonido por defecto).

Puede verificar esto yendo a las opciones de las notificaciones (mantenga presionada la entrada de notificación), donde podrá leer que es del tipo NotificationManager.IMPORTANCE_HIGH y luego deshabilitar la notificación y luego volver a habilitarla. En este proceso, se "rebaja" de NotificationManager.IMPORTANCE_HIGH a NotificationManager.IMPORTANCE_HIGH que no suena, realmente registrado.

El error se ha enviado al rastreador de problemas de Android, por lo que es posible que desee destacarlo (marcado por Google como "No se solucionará (inviable)", porque ... estropeado).

Por cierto, los nuevos documentos en https://developer.android.com/training/notify-user/channels afirman que el comportamiento predeterminado solía ser así, que el predeterminado reproducía un sonido anterior a Android 8.0, lo que definitivamente no es cierto . Esta es su lista

User-visible importance level Importance Priority (Android 8.0 and higher) (Android 7.1 and lower) Urgent Makes a sound and appears as IMPORTANCE_HIGH PRIORITY_HIGH a heads-up notification or PRIORITY_MAX High Makes a sound IMPORTANCE_DEFAULT PRIORITY_DEFAULT Medium No sound IMPORTANCE_LOW PRIORITY_LOW Low No sound and does not appear IMPORTANCE_MIN PRIORITY_MIN in the status bar

Incluso puede ver la falta de coincidencia entre la importancia de visibilidad alta y la importancia de notificación alta ... No sé por qué están haciendo esto. Definitivamente tienen un error en su código.

Todo lo que está debajo de la siguiente línea está obsoleto , sin embargo, ese error mencionado allí sigue siendo válido. Mi error fue pensar que NotificationManager.IMPORTANCE_MIN es el siguiente más bajo de NotificationManager.IMPORTANCE_DEFAULT , pero NotificationManager.IMPORTANCE_LOW es.

Cuando ingresa a la configuración de notificaciones de la aplicación a través del botón de notificación larga y de todos los canales y activa y desactiva el interruptor para ese canal, se establece en NotificationManager.IMPORTANCE_DEFAULT y no se reproducirá ningún sonido. También noté que después de un bloqueo, se restableció a NotificationManager.IMPORTANCE_HIGH

Básicamente, la solución es usar NotificationManager.IMPORTANCE_MIN . Pero debe crear un nuevo canal para que este NotificationManager.IMPORTANCE_MIN esté vigente, porque parece que no puede cambiar la importancia de un canal ya existente una vez que lo haya creado .

Actualización: Resulta la solución con NotificationManager.IMPORTANCE_MIN tiene un inconveniente.

Cuando usa ese nivel de importancia, su notificación ya no se muestra completamente dentro del cajón de notificaciones, sino que se inserta en un nuevo Grupo de canales de notificación que se contrae de manera predeterminada (y se colapsará nuevamente cada vez que se baje el cajón). ¡Qué fastidio!

Actualización 2: Excavando un poco más, resulta que es como si lo registrara correctamente como NotificationManager.IMPORTANCE_DEFAULT , pero de alguna manera se actualizó mágicamente a NotificationManager.IMPORTANCE_HIGH , como lo haría cuando el usuario cambia explícitamente la configuración de predeterminada a alta. Ese también se restablece a los valores predeterminados después de apagar la notificación y volver a encenderla.

Hoy comencé a apuntar a la API 26, lo que me obligó a usar canales de notificación.

Mi problema es que ahora en cada nueva notificación (incluidas las actualizaciones) se reproduce un sonido molesto.

¿Cómo puedo desactivar este sonido?

Intenté reemplazar este sonido con un sonido mp3 personalizado para luego pasarle un mp3 con silencio, pero esto se ignora.

Solo estoy agregando una notificación que es de muy baja prioridad, básicamente dando al usuario la opción de realizar algunas acciones después de haber interactuado con la aplicación. No hay razón para ser ruidoso, el usuario sabrá que puede consultar la notificación porque ha hecho algo con la aplicación y sabe que hará que aparezca una notificación.

El usuario realmente comenzará a molestarse por ese sonido.


Enfrenté el mismo problema en el 8.1 e hice los siguientes cambios. Cambie la prioridad de la notificación como BAJA y deshabilitará el sonido de la notificación.

NotificationManager.IMPORTANCE_LOW

El código es como sigue:

NotificationChannel chan1 = new NotificationChannel("default", "default", NotificationManager.IMPORTANCE_LOW);


Para mí, la solución fue crear una notificación grupal .

importance = NotificationManager.IMPORTANCE_LOW;

Pero en este caso, si envía una nueva notificación con una nueva ID, se agrupará con las notificaciones anteriores.


Por lo que he visto, desde API 26 (Oreo) no es posible cambiar el sonido de una notificación después de que se creó una vez.

notificationManager.deleteNotificationChannel("channel_id")); NotificationChannel notificationChannel = new NotificationChannel( "channel_id", "channel_name", NotificationManager.IMPORTANCE_HIGH); notificationChannel.setSound(null, null); notificationManager.createNotificationChannel(notificationChannel);

Incluso eliminar el canal antes de la creación no ayuda.

La documentación de Google dice:

android.app.NotificationManager public void deleteNotificationChannel(String channelId)

Elimina el canal de notificación dado. Si crea un nuevo canal con esta misma identificación, el canal eliminado se eliminará con la misma configuración que tenía antes de eliminarse.

NotificationChannel#setSound() estados de documentación

Solo modificable antes de que el canal se NotificationManager#createNotificationChannel(NotificationChannel) a NotificationManager#createNotificationChannel(NotificationChannel)

Lástima que notificationBuilder.setSound(defaultSoundUri) no funciona tan bien:

Este método fue desaprobado en el nivel 26 de la API. Utilice NotificationChannel # setSound (Uri, AudioAttributes) en su lugar.

También el uso de la biblioteca de soporte no funciona. Por lo tanto, el sonido solo se puede configurar una vez en la aplicación y el cambio por parte del usuario solo es posible en la configuración de la notificación. Para mí, el comentario de Ferran Negre no funcionó. No entiendo por qué Google hizo esta restricción. Demasiado.


Primero necesitas configurar

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

entonces

NotificationManager.IMPORTANCE_LOW


Si desea mantener la importancia de su canal y simplemente eliminar la notificationChannel.setSound(null, null); sonidoChannel.setSound notificationChannel.setSound(null, null); Parece hacer el trabajo.

EDITAR: asegúrese de cambiar el nombre del canal (y eliminar el antiguo) para que se aplique a los usuarios existentes. (Los canales se pueden crear, pero la aplicación nunca puede modificarlos, solo el usuario puede hacerlo).


Si el caso es como el mío, me veo obligado a mostrar una notificación para el servicio en segundo plano y realmente no quiero mostrar ninguna notificación, la solución que funcionó en 8.0 fue:

.setPriority(NotificationManager.IMPORTANCE_NONE)

Con esto no solo no recibí el sonido molesto cada 5 minutos, sino que también minimicé la aparición de la notificación en sí.

En 8.1 no tuve el problema con el sonido con lo siguiente:

.setPriority(NotificationManager.IMPORTANCE_MIN)


NotificationManager.IMPORTANCE_LOW funcionará seguro


NotificationChannel chan1 = new NotificationChannel("default", "default", NotificationManager.IMPORTANCE_LOW);

Esto funcionará pero también colapsó su notificación.


NotificationManager.IMPORTANCE_LOW

No produce sonido cuando se crea la notificación, ya que necesito lo mismo en mi aplicación de música.

Y sí, si ya ha creado un canal de notificación, entonces necesita cambiar la identificación del canal o simplemente desinstalar la aplicación anterior e instalar nuevamente.