Notification Heads-up-Android Lollipop

j'essaye de montrer un avertissement de type notification mais je ne pouvais pas. Ce que j'ai essayé

final Notification.Builder notif = new Builder(getApplicationContext())
    .setContentTitle(getString(R.string.title))
    .setContentText(getString(R.string.text))
//  .setTicker(getString(R.string.tick)) removed, seems to not show at all
//  .setWhen(System.currentTimeMillis()) removed, match default
//  .setContentIntent(contentIntent) removed, I don't neet it
    .setColor(Color.parseColor(getString(R.color.yellow))) //ok
    .setSmallIcon(R.drawable.ic_small) //ok
    .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
//  .setCategory(Notification.CATEGORY_CALL) does not seem to make a difference
    .setPriority(Notification.PRIORITY_MAX); //does not seem to make a difference
//  .setVisibility(Notification.VISIBILITY_PRIVATE); //does not seem to make a difference

mNotificationManager.notify(Constants.NOTIFICATION_ID, notif.build());

la notification n'apparaît que sous forme d'icône dans la barre. J'utilise API 21 sur L'émulateur API 21 (Pas de prévisualisation) J'ai essayé:

android:Theme.Holo.NoActionBar,

android:Theme.Holo.NoActionBar.Fullscreen

et NotificationCompat.Builder

les exemples de SDK ne sont pas disponibles. personne ne sait comment le faire?

j'ai fait ce travail en ajoutant:

.setDefaults(Notification.DEFAULT_VIBRATE)

est-ce la meilleure façon de faire?

42
demandé sur Iain Smith 2014-10-19 19:08:33

7 réponses

Selon Notifications, vous devez configurer un vibreur ou une sonnerie pour faire fonctionner Heads-up. Cependant, voici un hack rapide qui ne nécessite pas de permission vibrante pour produire une notification head-up:

notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
if (Build.VERSION.SDK_INT >= 21) notificationBuilder.setVibrate(new long[0]);

EDIT:

Ne pas abuser de la notification d'avertissement. Voir ici pour savoir quand utiliser le heads-up de notification:

MAX: pour les notifications critiques et urgentes qui alertent l'utilisateur d'une condition qui est le problème doit être résolu avant qu'une tâche particulière ne puisse se poursuivre.

élevé: principalement pour les communications importantes, comme les messages ou les événements de chat avec du contenu qui est particulièrement intéressant pour l'utilisateur. Les notifications hautement prioritaires déclenchent l'affichage de notification heads-up.

76
répondu Mygod 2016-04-03 07:06:59

selon Google: https://developer.android.com/design/patterns/notifications.html

si la priorité d'une notification est marquée High, Max, ou full-screen, il obtient une notification de heads-up.

ainsi le code suivant devrait générer une notification heads-up:

.setPriority(Notification.PRIORITY_MAX)

Devrait être suffisant. Mais apparemment, l' .setDefaults (Notification.DEFAULT_VIBRATE) doit aussi être défini. Si tout va bien Google va corriger cela dans leur sortie de la version finale d'Android 5.0.

Je ne suis pas sûr que ce soit un bug ou une fonctionnalité...

15
répondu MLS 2014-10-22 08:57:14

Toutes mes applications ne marche pas afficher la Notification, par exemple, j'ai un Nexus 6 avec Android 5.1.1, mais je pense que c'est un issuse depuis Android 5.0, j'ai dû mettre:

.setPriority(Notification.PRIORITY_HIGH)

correctement définir et gérer la priorité de notification

Android supporte un drapeau de priorité pour les notifications. Ce drapeau vous permet d'influencer l'endroit où votre notification apparaît, par rapport à d'autres notifications, et aide à s'assurer que les utilisateurs voient toujours leurs notifications les plus importantes en premier. Vous pouvez choisissez parmi les niveaux de priorité suivants lors de l'affichage d'une notification:

MAX utiliser pour les notifications critiques et urgentes qui alertent l'utilisateur d'un état critique dans le temps ou qui doit être résolu avant ils peuvent poursuivre une tâche particulière.

utiliser principalement pour les communications importantes, comme les messages ou les événements de chat avec du contenu qui est particulièrement intéressant pour le utilisateur. Priorité les notifications déclenchent la notification de mise en garde afficher.

DEFAULT utiliser pour toutes les notifications qui ne tombent pas dans l'une des autres priorités décrites ici et si l'application ne prioriser ses propres notifications

faible utilisez pour les notifications que vous voulez que l'utilisateur soit informé, mais qui sont moins urgentes. Les notifications de faible priorité ont tendance à: montrer jusqu'au bas de la liste, ce qui en fait un bon choix pour des choses comme les mises à jour sociales publiques ou non: l'Utilisateur a demandé à être informé à leur sujet, mais ces notifications ne devraient jamais prendre priorité sur les communications urgentes ou directes.

MIN utiliser pour des renseignements contextuels ou contextuels tels que des renseignements météorologiques ou des renseignements contextuels sur l'emplacement. Minimum de priorité les notifications n'apparaissent pas dans la barre d'état. L'utilisateur découvre sur l'extension de la notification ombre.

7
répondu Jorgesys 2018-03-07 16:26:00

prioritaire,setPriority fonction (présenté dans l'API 16) alongwith setDefaults (ajouté dans API 11) de Notification Builder. Choisissez la priorité DEFAULT, en HAUT, en BAS, MAX, MIN selon les exigences de votre application. Les valeurs par défaut peuvent aussi être choisies ici.

Un petit exemple de code:

notification = NotificationBuilder(service)
notification.setPriority(Notification.PRIORITY_MAX)
notification.setDefaults(Notification.DEFAULT_ALL)
5
répondu unixia 2017-01-04 07:39:39

devrait établir une haute priorité et utiliser des sonneries ou des vibrations.

notificationBuilder.setDefaults(Notification.DEFAULT_ALL);
notificationBuilder.setPriority(Notification.PRIORITY_HIGH);

Réf: https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Heads-up

Heads-up Notifications

avec Android 5.0 (API Niveau 21), les notifications peuvent apparaître dans un petit fenêtre flottante (également appelée notification heads-up) lorsque l'appareil est actif (si l'appareil est déverrouillé et que son écran est allumé). Ces notifications semblent similaires à la forme compacte de votre notification, sauf que la notification de mise en garde indique également l'action bouton. Les utilisateurs peuvent donner suite à une notification de mise en garde ou la rejeter sans quitter l'application actuelle.

exemples de conditions qui peuvent déclencher des notifications d'alerte inclure:

  • l'activité de L'utilisateur est en mode plein écran (l'application utilise fullScreenIntent), ou
  • la notification a haute la priorité et sonneries ou vibrations
1
répondu situee 2017-07-19 02:59:32

ajouter cette ligne dans votre code pour afficher la notification heads up. cela ne fonctionne que pour la version Lollipop

notificationBuilder.setPriority(Notification.PRIORITY_HIGH);
0
répondu Amit Desale 2016-08-10 09:27:25

pour les appareils exécutant Android 8.0 (niveau API 26) et supérieur, le canal de notification nécessite une grande importance

new NotificationChannel("ID", "Channel Name", NotificationManager.IMPORTANCE_HIGH);
0
répondu Megaetron 2018-03-14 16:47:18