android - oreo - startForeground() no muestra mi notificación
push notifications android 8 (5)
DMitry. Acabo de sufrir tu problema y encontré la causa.
Si su aplicación está cambiando el estado de un COMPONENTE PackageManager.setComponentEnabledSetting())
Android elimina el servicio de foregraound y su ícono de notificación.
Estoy tratando de hacer que mi Service
ejecute en primer plano. Intenté usar este ejemplo (busque la sección " Ejecución de un servicio en primer plano "), pero startForeground()
no muestra mi notificación. Y no se arrojan excepciones. Para que se muestre, necesito usar NotificationManager
como se explica aquí . Con NotificationManager
mi notificación funciona, pero no estoy seguro de que mi Service
esté en primer plano después de esta llamada "silenciosa" a startForeground()
.
¿Qué puede estar mal?
EDITAR : ¡Acabo de probar este proyecto de muestra que debería demostrar startForeground()
, pero no funciona! Utilizo la API v7.0, la probé tanto en el emulador como en el dispositivo real (SE Xperia Neo). La notificación no aparece.
EDIT2 : si trato de llamar a setForeground()
entonces tengo un setForeground: ignoring old API call
advertencia setForeground: ignoring old API call
.
También traté de usar startForegroundCompat()
como se describe aquí , pero el efecto es absolutamente el mismo. Compruebo si mi servicio está en primer plano utilizando ActivityManager.RunningServiceInfo
como se describe aquí , y veo que mi servicio no está en primer plano.
Me acabo de dar cuenta de que startForeground()
no muestra el icono de notificación si el parámetro id
se establece en 0
...
startForeground(0, notification); // Doesn''t work...
startForeground(1, notification); // Works!!!
Espero que pueda ayudar a alguien a quedarse en esto.
además de la mejor respuesta. también debe verificar que ha llamado a setSmallIcon
. En mi teléfono Android, no puedo obtener lo que esperaba sin llamar a setSmallIcon
Este podría ser un hilo viejo, pero me gustaría agregar lo que acabo de aprender y que aún no se menciona:
Es posible que un Service
siga vivo después de stopSelf()
porque hay Activity
que se han vinculado al Service
. Como cuestión de hecho, startForeground()
simplemente no mostrará la notificación ni dará ninguna excepción en esta circunstancia.
¿Es su servicio un servicio iniciado o un servicio vinculado? Tuve el mismo problema con un servicio enlazado, pero iniciar el servicio antes de vincularlo me permitió llamar a startForeground(int, notification)
y hacer que apareciera la notificación.