2015-05-12 14 views
6

Mi sembra che questo dovrebbe essere banale ma non riesco a far apparire una notifica sullo schermo del telefono - si presenta solo nella barra di stato in alto.Come visualizzare le notifiche Android sullo schermo e l'icona della barra di stato?

Per un esempio di ciò che voglio fare, ecco come Facebook Messenger viene visualizzato sullo schermo quando si riceve un messaggio.

Facebook on-screen notification

Ogni volta che inviare una notifica, non fa altro che mostrare la piccola icona nella barra di stato - anche se ho impostato la priorità a PRIORITY_MAX. C'è un'altra impostazione che devo fare per farlo apparire sullo schermo invece della barra di stato?

Il codice di visualizzazione di notifica:

PendingIntent contentIntent = PendingIntent.getActivity(context, nextId++, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

Notification.Builder builder = new Notification.Builder(context) 
     .setContentTitle(title) 
     .setContentText(description) 
     .setContentIntent(contentIntent) 
     .setSmallIcon(R.drawable.ic_stat_notification) 
     .setLargeIcon(largeIcon) 
     .setPriority(Notification.PRIORITY_DEFAULT) 
     .setAutoCancel(true) 
     .setDefaults(Notification.DEFAULT_ALL); 

if (android.os.Build.VERSION.SDK_INT >= 21) { 
    builder.setColor(context.getResources().getColor(R.color.orange_500)) 
      .setVisibility(Notification.VISIBILITY_PUBLIC); 
} 

Notification notification = builder.build(); 
notificationManager.notify(id, notification); 
+0

Una notifica di testa a testa come quella dovrebbe sorgere attraverso l'utilizzo di alta priorità con il tuo 'NotificationCompat.Builder'. Vedi: https://github.com/commonsguy/cw-omnibus/tree/master/Notifications/Lollipop – CommonsWare

+0

Ah, eccolo. Strano che tu abbia bisogno di usare "NotificationCompat.Builder" per farlo. Se vuoi aggiungerlo come risposta, lo accetto. –

risposta

10

Tutto considerato, è un davvero buona idea usare NotificationCompat.Builder sopra Notification.Builder, per non parlare di creazione di un Notification manualmente. Ti offre una buona compatibilità con le versioni precedenti con un degrado aggraziato (fino al livello API 4, altrimenti noto come "gadzooks, è vecchio"). AFAIK, è l'unico modo per ottenere un po 'di roba Android Wear in corso, se utilizzato in concerto con NotificationManagerCompat. E, in questo caso, sembra essere più felice con le nuove funzionalità di Android 5.0+.

In questo caso, setPriority(NotificationCompat.PRIORITY_HIGH) su un NotificationCompat.Builder, utilizzato con NotificationManagerCompat, fornirà la notifica di testata su Android 5.0+.

Problemi correlati