web-dev-qa-db-fra.com

Android: Comment puis-je placer ma notification en haut de la zone de notification?

J'essaie de mettre ma notification en haut de la zone de notification.

Une solution consiste à définir le paramètre "quand" sur mon objet de notification avec une heure future comme:

notification.when = System.currentTimeMills()*2; 

Le code que j'utilise ici:

        long timeNotification = System.currentTimeMillis()*2;
        Notification notification = new Notification(statusIcon,c.getResources().getString(R.string.app_name),timeNotification);
        notification.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
        notification.when = timeNotification;
        notification.priority = Notification.PRIORITY_MAX;

mais certaines applications (comme Facebook) sont capables de mettre une simple notification avec leur heure actuelle sur la mienne.

Si je rafraîchis ma notification, elle reste sous celles-ci.

Quels paramètres dois-je définir pour placer mon Notification en haut de la zone des notifications?

22
Meroelyth

Vous devriez faire ceci. D'autres réponses semblent dépassées.

NotificationCompat.Builder mBuilder =
            (NotificationCompat.Builder) new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.some_small_icon)
            .setContentTitle("Title")
            .setContentText("This is a test notification with MAX priority")
            .setPriority(Notification.PRIORITY_MAX);

setPriority (Notification.PRIORITY_MAX) est important. Il peut également être remplacé par l'un des éléments suivants selon les exigences.

Différents niveaux de priorité Info:

PRIORITY_MAX - À utiliser pour les notifications critiques et urgentes qui alertent l'utilisateur d'une condition critique ou devant être résolue avant de pouvoir continuer avec un une tâche particulière.

PRIORITY_HIGH - À utiliser principalement pour les communications importantes, telles que les messages ou les événements de chat avec un contenu particulièrement intéressant pour l'utilisateur. Les notifications de haute priorité déclenchent l'affichage des notifications tête haute.

PRIORITY_DEFAULT - À utiliser pour toutes les notifications qui ne correspondent à aucune des autres priorités décrites ici.

PRIORITY_LOW - À utiliser pour les notifications dont vous souhaitez que l'utilisateur soit informé, mais qui sont moins urgentes. Les notifications de faible priorité ont tendance à apparaître en bas de la liste, ce qui en fait un bon choix pour des choses comme les mises à jour sociales publiques ou non dirigées: l'utilisateur a demandé à être notifié à leur sujet, mais ces notifications ne devraient jamais avoir la priorité sur les urgentes ou communication directe.

PRIORITY_MIN - À utiliser pour des informations contextuelles ou contextuelles telles que des informations météorologiques ou des informations contextuelles de localisation. Les notifications de priorité minimale n'apparaissent pas dans la barre d'état. L'utilisateur les découvre en élargissant l'ombre des notifications.

Pour plus de détails, consultez le lien suivant: http://developer.Android.com/design/patterns/notifications.html#correctly_set_and_manage_notification_priority

18
Vineet Ashtekar

Essayez de définir priority de la notification sur élevé

documentation> Priorité de notification

Vérifiez également cette question, cela pourrait vous aider Épingler la notification en haut de la zone de notification

3
Jagdeep Singh

Vous pouvez faire votre notification Ongoing, quand elle apparaîtra plus haut que les autres notifications habituelles. Mais dans ce cas, l'utilisateur pas pourra l'effacer manuellement.

Pour ce faire, définissez des indicateurs sur votre objet Notification:

notif.flags = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR
3
HitOdessit

Veuillez noter que si vous souhaitez une notification "heads-up", c'est-à-dire une notification qui s'affiche en haut de la fenêtre utilisateur actuelle, vous devez avoir défini ce qui suit dans votre générateur:

setDefaults(NotificationCompat.DEFAULT_VIBRATE)

La référence est dans le javadoc :

Une notification qui vibre est plus susceptible d'être présentée comme une notification tête haute, sur certaines plateformes.

Exemple complet pour une notification tête haute:

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.some_small_icon)
            .setContentTitle("Title")
            .setContentText("This is a test notification with MAX priority")
            .setPriority(Notification.PRIORITY_MAX)
            .setDefaults(NotificationCompat.DEFAULT_VIBRATE);
2
David Rawson