2014-10-19 9 views
39

Ich versuche, eine Benachrichtigung-Art Heads-up zu zeigen, aber ich konnte nicht. Was ich versucht habeHeads-up-Benachrichtigung - Android Lollipop

   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()); 

Die Benachrichtigung wird nur als Symbol in der Leiste angezeigt. Ich bin mit api 21 auf api21 Emulator (nicht L Vorschau) Versuchte android: Theme.Holo.NoActionBar und android: Theme.Holo.NoActionBar.Fullscreen Und NotificationCompat.Builder

Sdk Beispiele sind nicht verfügbar. weiß jemand wie man es macht?

ich es gemacht Arbeiten

    .setDefaults(Notification.DEFAULT_VIBRATE) 

ist der beste Weg, das Hinzufügen?

+0

, wenn dies für Sie gearbeitet, die Sie sollten es als Antwort hinzufügen. – ProllyGeek

+1

Bitte beachten Sie, dass Heads-Up-Benachrichtigungen EXTREM nervig sein können, wenn Sie Medien ansehen oder eine beliebige App verwenden. Es überrascht nicht, dass fast jede App den oberen Bildschirmrand verwendet. Sie werfen einen Schatten über das obere Drittel des Bildschirms (getestet auf meinem 8 "Tegra Shield). Wenn Sie diese verwenden müssen (Himmel weiß warum), deaktivieren Sie sie mindestens in Ihrer App eine Option, bitte! –

+0

@ user1499731 Android hat native Unterstützung für die Deaktivierung der Benachrichtungsbenachrichtigung für eine App IIRC – Mygod

Antwort

73

Nach Notifications, Sie verpflichtet sind, ein Vibrieren oder Klingelton eingestellt Heads-up-Arbeit zu machen. Allerdings ist hier ein schneller Hack, eine Head-up-Benachrichtigung nicht VIBRATE Genehmigung erforderlich zu produzieren:

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

EDIT:

nicht missbrauchen Heads-up-Benachrichtigung. Siehe here für wenn Heads-up-Benachrichtigung verwenden:

MAX: Für kritische und dringende Meldungen, die den Benutzer auf einen Zustand aufmerksam machen, dass zeitkritische oder muss gelöst werden, bevor sie mit einer bestimmten Aufgabe fortsetzen kann.

HIGH: In erster Linie für wichtige Kommunikation, wie Nachrichten oder Chat-Ereignisse mit Inhalten, die für den Benutzer besonders interessant sind. Benachrichtigungen mit hoher Priorität lösen die Benachrichtigung über die Heads-up-Benachrichtigung aus.

+0

Das ist nicht wahr - ich habe kürzlich einen Absturzbericht für eine SecurityException auf einem Samsung Android 4-Gerät mit dieser Methode –

+0

@DaiwikDaarun Ist es von 'setVibrate' geworfen? Wenn es nur unter Android 4.x reproduzierbar ist, können wir eine Laufzeitversionsprüfung hinzufügen. – Mygod

15

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

Wenn eine Meldung Priorität als Hoch, Max, oder der Vollbild markiert ist, wird es eine Heads-up-Benachrichtigung.

So ist der folgende Code sollte ein Heads-up-Benachrichtigung erzeugen:

.setPriority(Notification.PRIORITY_MAX) 

sollte ausreichen. Aber anscheinend muss auch die .setDefaults (Notification.DEFAULT_VIBRATE) gesetzt werden. Hoffentlich wird Google das in ihrer endgültigen Version von Android 5.0 beheben.

Nicht sicher, ob Fehler oder Feature ...

+2

'Notification.PRIORITY_HIGH' ist hoch genug, Sie müssen (und sollten wahrscheinlich nicht)' PRIORITY_MAX' nur einstellen, weil Sie wollen Ihre Benachrichtigungen werden als Heads-Up angezeigt –

+6

Es scheint, dass entweder ein Ton und/oder ein Vibrationsalarm auf der Benachrichtigung eingestellt werden muss, damit es als "heads-up" angezeigt wird. Dies macht eigentlich Sinn, da es seltsam wäre, es zu sehen eine stumme "heads-up" -Benachrichtigung, und es ist möglicherweise nicht offensichtlich, dass es sonst eine Systembenachrichtigung ist. –

+0

In Android M ist es jetzt möglich, Head-Up-Benachrichtigungen zu deaktivieren/auf eine App zu schauen Basis. Also, wenn das spähen deaktiviert, was auch immer Sie tun, werden Ihre Heads-Up-Benachrichtigungen nicht angezeigt. Behalte dies im Kopf . – MLS

6

All meine apps haben nicht die Benachrichtigung anzeigen, zum Beispiel habe ich einen Nexus 6 mit Android 5.1.1, aber ich denke, dies ist ein issuse seit Android 5.0, hatte ich zu setzen:

.setPriority(Notification.PRIORITY_HIGH) 

Benachrichtigungs-Priorität richtig festlegen und verwalten

Android unterstützt ein Prioritätskennzeichen für Benachrichtigungen.Mit dieser Markierung können Sie beeinflussen, wo Ihre Benachrichtigung im Vergleich zu anderen Benachrichtigungen angezeigt wird, und sicherstellen, dass Benutzer ihre wichtigsten Benachrichtigungen immer zuerst sehen. Sie können aus den folgenden Prioritätsstufen wählen, wenn eine Benachrichtigung Buchung:

MAX Verwendung für kritische und dringende Meldungen, die den Benutzer auf einen Zustand aufmerksam machen, dass zeitkritische oder aufgelöst werden muss, bevor sie weiterhin mit einer bestimmten Aufgabe.

HIGH Verwenden Sie in erster Linie für wichtige Kommunikation, wie Nachrichten oder Chat-Ereignisse mit Inhalten, die besonders interessant für die Benutzer ist. Benachrichtigungen mit hoher Priorität lösen die Heads-Up-Benachrichtigung aus.

STANDARD Verwendung für alle Meldungen, die in keine der anderen Prioritäten hier beschrieben wird, nicht fallen, und wenn die Anwendung keine eigenen Benachrichtigungen priorisieren

LOW Verwenden Benachrichtigungen, die Sie den Benutzer mögen über informiert werden, aber das ist weniger dringend. Niedrige Priorität Benachrichtigungen neigen dazu, am Ende der Liste angezeigt, was sie zu einer guten Wahl für Dinge wie öffentliche oder ungerichtete soziale Updates macht: Der Benutzer hat gebeten, über sie benachrichtigt werden, aber diese Benachrichtigungen sollten nie nehmen Vorrang vor dringender oder direkter Kommunikation.

MIN Verwendung für Kontext- oder Hintergrundinformationen wie Wetterinformationen oder kontextabhängige Standortinformationen. Die Benachrichtigungen mit der Priorität mit der niedrigsten Priorität erscheinen nicht in der Statusleiste. Der Benutzer entdeckt sie beim Erweitern des Benachrichtigungsschirms mit .

0

Fügen Sie diese Zeile im Code Köpfe Benachrichtigung angezeigt werden bis es nur für Lollipop-Version arbeiten

notificationBuilder.setPriority(Notification.PRIORITY_HIGH); 
+0

Es funktioniert für mich –

3

die priority einzustellen, verwenden Sie die setPriority Funktion alongwith setDefaults (in API 16 eingeführt) (hinzugefügt in API 11) von Notification Builder. Wählen Sie die Priorität DEFAULT, HIGH, LOW, MAX, MIN gemäß den Anforderungen Ihrer App. Standardwerte können auch here gewählt werden.

Ein kleiner Ausschnitt:

notification = NotificationBuilder(service) 
notification.setPriority(Notification.PRIORITY_MAX) 
notification.setDefaults(Notification.DEFAULT_ALL) 
+1

gut Ihr Code ist Arbeit für mich –

1

sollte hohe Priorität gesetzt und Klingeltöne oder Vibrationen verwenden.

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

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

Heads-up Benachrichtigungen

Mit Android 5.0 (API-Ebene 21), Meldungen in einem kleinen schwebenden Fenster erscheinen können (auch als Heads- Wenn das Gerät aktiv ist (dh das Gerät ist entsperrt und sein Bildschirm ist eingeschaltet). Diese Benachrichtigungen erscheinen ähnlich wie die kompakte Form Ihrer Benachrichtigung, außer dass die Benachrichtigung über den Vorgang auch die Aktion anzeigt. Benutzer können eine Heads-up-Benachrichtigung ohne ausführen oder ablehnen, wenn sie die aktuelle App verlassen.

Beispiele für Bedingungen, die Head-Up-Benachrichtigungen umfassen auslösen können: und Verwendungen

  • die Benutzeraktivität ist im Vollbild-Modus (App verwendet fullScreenIntent) oder
  • Die Meldung hat hohe Priorität Klingeltöne oder Vibrationen