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.