Android - Benachrichtigung in der Benachrichtigungsleiste stabil halten
-
26-10-2019 - |
Frage
Ich habe die Funktion zum Benachrichtigen und Anzeigen in der Benachrichtigungsleiste geschrieben:
private void showNotification()
{
CharSequence title = "Hello";
CharSequence message = "Notification Demo";
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.icon, "A Notification", System.currentTimeMillis());
Intent notificationIntent = new Intent(this, Main_Activity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(Main_Activity.this, title, message, pendingIntent);
notificationManager.notify(NOTIFICATION_ID, notification);
}
Es funktioniert gut, aber what way we can keep the notification steady at Notification bar
Auch wenn der Benutzer die Benachrichtigungsleiste "Löschen" von Notificatios drücken?
Bitte schauen Sie sich die Benachrichtigungsleiste der "Yahoo" -Anwendung an.
Ich habe diesen SDK -Artikel durchlaufen: http://developer.android.com/guide/topics/ui/notifiers/notifications.html#updating , aber nicht herausgefunden.
Lösung
Verwenden FLAG_NO_CLEAR
Stellen Sie es einfach auf Ihre Notification
Instanz, bevor Sie es an die Lieferung liefern NotificationManager
:
notificaton.flags |= Notification.FLAG_NO_CLEAR;
bearbeiten: Ich habe jedoch gerade bemerkt, dass wenn Sie verwenden Notification.Builder
(Da Wabe) und die Benachrichtigung "fortlaufend" machen wird, wird es auch immun gegen "alle". Sehen hier.
Anscheinend soll dies Entwickler davon abhalten, die zu verwenden FLAG_NO_CLEAR
Auf einem nicht-egoing-Benachrichtigung, da dies den Benutzer verwirren könnte.
Andere Tipps
Versuchen setongoing (wahr).
notification = new Notification.Builder(getApplicationContext())
.setLargeIcon(
BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher))
.setSmallIcon(R.drawable.ic_launcher).setTicker(tickerText)
.setWhen(System.currentTimeMillis()).setContentTitle(contentTitle)
.setOngoing(true)
.setContentText(contentText)
.setContentIntent(contentIntent)