Necesito un programa que agregue una notificación en Android. Y cuando alguien hace clic en la notificación, debería llevarlos a mi segunda actividad.
He establecido un código. La notificación debería estar funcionando, pero por alguna razón no funciona. No Notification
se ve en absoluto. No sé qué me estoy perdiendo.
Código de esos archivos:
Notification n = new Notification.Builder(this)
.setContentTitle("New mail from " + "[email protected]")
.setContentText("Subject")
.setContentIntent(pIntent).setAutoCancel(true)
.setStyle(new Notification.BigTextStyle().bigText(longText))
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after it's selected
notificationManager.notify(0, n);
android
notifications
Choudhury AM
fuente
fuente
Activity
No se está lanzando? ¿Notification
No se muestra?Respuestas:
El código no funcionará sin un icono. Entonces, agregue la
setSmallIcon
llamada a la cadena de construcción de esta manera para que funcione:Android Oreo (8.0) y superior
Android 8 introdujo un nuevo requisito de configurar la
channelId
propiedad mediante unNotificationChannel
.fuente
setChannelId
se requieren. Antes de agregar eso, la notificación se muestra en mi dispositivo SONY pero no en el dispositivo SAMSUNG.Android.OS.BuildVersionCodes.O
es igual a 26?if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ mBuilder.setChannelId(channelId); }
ya que sin esta verificación, la notificación no aparecerá, incluso si la API de su dispositivo> = 26.En realidad, la respuesta de ƒernando Valle no parece correcta. Por otra parte, su pregunta es demasiado vaga porque no menciona lo que está mal o no funciona.
Mirando su código, supongo que
Notification
simplemente no se muestra.Su notificación no se muestra porque no proporcionó un icono. Aunque la documentación del SDK no menciona que sea necesario, de hecho lo es mucho y
Notification
no se mostrará sin uno.addAction
solo está disponible desde 4.1. Antes de eso, usaríaPendingIntent
para iniciar unActivity
. Parece que especificas aPendingIntent
, por lo que tu problema está en otra parte. Lógicamente, hay que concluir que es el icono que falta.fuente
Notification.Builder
, noNotificationCompat.Builder
, como está sugiriendo. El hecho de que haya una biblioteca de compatibilidad y se pueda usar no significa que la función esté disponible en la API normal. El enlace que proporcionas realmente lo estipula. Esta pregunta está claramente relacionada conNotification.Builder
, como muestra el ejemplo. Y la biblioteca de compatibilidad probablemente solo incluyó esta función después de que 4.1 estuviera disponible. Su respuesta es engañosa, porque ahora sugiere que ha estado disponible desde la 2.3.Faltaba el icono pequeño. Cometí el mismo error y el paso anterior lo resolvió.
Según la documentación oficial: Un objeto de notificación debe contener lo siguiente:
Un pequeño icono, establecido por setSmallIcon ()
Un título, establecido por setContentTitle ()
Texto detallado, establecido por setContentText ()
En Android 8.0 (API nivel 26) y versiones posteriores , un ID de canal de notificación válido, establecido por setChannelId () o proporcionado en el constructor NotificationCompat.Builder al crear un canal.
Ver http://developer.android.com/guide/topics/ui/notifiers/notifications.html
fuente
Esto me hizo tropezar hoy, pero me di cuenta de que era porque en Android 9.0 (Pie), No molestar por defecto también oculta todas las notificaciones, en lugar de silenciarlas como en Android 8.1 (Oreo) y antes. Esto no se aplica a las notificaciones.
Me gusta tener DND activado para mi dispositivo de desarrollo, así que entrar en la configuración de DND y cambiar la configuración para simplemente silenciar las notificaciones (pero no ocultarlas) me lo arregló.
fuente
La creación de canales de notificación es obligatoria para las versiones de Android posteriores a Android 8.1 (Oreo) para hacer visibles las notificaciones. Si las notificaciones no están visibles en su aplicación para Oreo + Androids, debe llamar a la siguiente función cuando se inicie su aplicación:
fuente
Creo que olvidas el
Mira aquí: Agregar acción
fuente
addAction()
no está disponible enNotification.Builder
.Action
instancia con la que puede crearNotification.Action.Builder
. PD, siempre use la alternativa de Compat (es decir, NotificationCompat), ya que Google tiende a parchear errores y proporcionar una mejor compatibilidad con ellos.setContentIntent(null)
con el constructor.Tuve el mismo problema con mi aplicación de Android. Estaba probando notificaciones y descubrí que se mostraban notificaciones en mi emulador de Android que ejecutaba un sistema Android 7.0 (Nougat), mientras que no se estaba ejecutando en mi teléfono que tenía Android 8.1 (Oreo).
Después de leer la documentación, descubrí que Android tenía una función llamada canal de notificación, sin la cual las notificaciones no aparecerían en los dispositivos Oreo. A continuación se muestra el enlace a la documentación oficial de Android sobre los canales de notificación.
fuente
Para mí fue un problema
deviceToken
. Verifique si el token del dispositivo receptor y remitente está actualizado correctamente en su base de datos o en cualquier lugar al que acceda para enviar notificaciones.Por ejemplo, use lo siguiente para actualizar el token del dispositivo al iniciar la aplicación. Por lo tanto, siempre se actualizará correctamente.
fuente
deviceToken
declara esto ?onSuccess
vacío?onSuccess
s - me refería al interior (que está vacío))También debe cambiar el archivo build.gradle y agregarle la versión usada del SDK de Android:
Esto funcionó de maravilla en mi caso.
fuente
Es posible que las notificaciones no se muestren si muestra las notificaciones rápidamente una tras otra o si cancela una existente y luego la muestra de nuevo inmediatamente (por ejemplo, para activar una notificación de aviso para notificar al usuario sobre un cambio en una notificación en curso). En estos casos, el sistema puede decidir simplemente bloquear la notificación cuando sienta que podría resultar demasiado abrumadora / spam para el usuario.
Tenga en cuenta que, al menos en Android estándar (probado con 10) desde el exterior, este comportamiento parece un poco aleatorio: a veces sucede y otras no. Supongo que hay un límite de tiempo muy corto durante el cual no se le permite enviar demasiadas notificaciones. Llamar
NotificationManager.cancel()
y luego aNotificationManager.notify()
veces puede causar este comportamiento.Si tiene la opción, cuando actualice una notificación, no la cancele antes, solo llame
NotificationManager.notify()
con la notificación actualizada. Esto no parece desencadenar el bloqueo mencionado anteriormente por parte del sistema.fuente
Si está en la versión> = Android 8.1 (Oreo) mientras usa un canal de notificación, establezca su importancia en alta:
fuente