Eine einfache Benachrichtigung enthält in der Regel einen Titel, eine Textzeile und Aktionen, die der Nutzer als Reaktion ausführen kann. Sie können große, maximierbare Benachrichtigungen erstellen, indem Sie eine der in diesem Dokument beschriebenen Benachrichtigungsvorlagen anwenden.
Erstellen Sie zuerst eine Benachrichtigung mit allen grundlegenden Inhalten, wie unter Benachrichtigung erstellen beschrieben. Rufen Sie dann setStyle() mit einem Stilobjekt auf und geben Sie Informationen für jede Vorlage an, wie in den folgenden Beispielen gezeigt.
Großes Bild hinzufügen
Wenn Sie Ihrer Benachrichtigung ein Bild hinzufügen möchten, übergeben Sie eine Instanz von NotificationCompat.BigPictureStyle an setStyle().
var notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(com.example.compose.snippets.R.drawable.ic_logo) .setContentTitle("Title") .setContentText("Content text") .setStyle( NotificationCompat.BigPictureStyle() .bigPicture(bitmapImage) ) .build()
Wenn das Bild nur als Miniaturbild angezeigt werden soll, während die Benachrichtigung minimiert ist (siehe Abbildung unten), rufen Sie setLargeIcon() auf und übergeben Sie das Bild. Rufen Sie dann BigPictureStyle.bigLargeIcon() auf und übergeben Sie null, damit das große Symbol verschwindet, wenn die Benachrichtigung maximiert wird:
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("Title") .setContentText("Content text") .setLargeIcon(Icon.createWithResource(context, R.drawable.dog)) .setStyle( NotificationCompat.BigPictureStyle() .bigPicture(bitmapImage) .bigLargeIcon(null as Bitmap?) ) .build()
NotificationCompat.BigPictureStyle.
Einen großen Textblock hinzufügen
Wenden Sie NotificationCompat.BigTextStyle an, um Text im maximierten Inhaltsbereich der Benachrichtigung anzuzeigen:
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("Sender name") .setContentText("Email subject") .setLargeIcon(Icon.createWithResource(context, R.drawable.dog)) .setStyle( NotificationCompat.BigTextStyle() .bigText(someVeryLongMessage) ) .build()
NotificationCompat.BigTextStyle.
Benachrichtigung im Posteingangsstil erstellen
Wenden Sie NotificationCompat.InboxStyle auf eine Benachrichtigung an, wenn Sie mehrere kurze Zusammenfassungszeilen hinzufügen möchten, z. B. Snippets aus eingehenden E‑Mails. So können Sie mehrere Textinhalte hinzufügen, die jeweils auf eine Zeile gekürzt werden, anstatt der einen fortlaufenden Textzeile, die von NotificationCompat.BigTextStyle bereitgestellt wird.
Um eine neue Zeile hinzuzufügen, rufen Sie addLine() bis zu sechsmal auf, wie im folgenden Beispiel gezeigt. Wenn Sie mehr als sechs Zeilen hinzufügen, werden nur die ersten sechs angezeigt.
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.mail) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(bitmapImage) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build()
Das Ergebnis sieht so aus:
Unterhaltung in einer Benachrichtigung anzeigen
Mit NotificationCompat.MessagingStyle können Sie sequenzielle Nachrichten zwischen einer beliebigen Anzahl von Personen anzeigen. Das ist ideal für Messaging-Apps, da das Layout für jede Nachricht einheitlich ist. Sendername und Nachrichtentext werden separat behandelt und jede Nachricht kann mehrere Zeilen lang sein.
Wenn Sie eine neue Nachricht hinzufügen möchten, rufen Sie addMessage() auf und übergeben Sie den Nachrichtentext, die Empfangszeit und den Namen des Absenders. Sie können diese Informationen auch als NotificationCompat.MessagingStyle.Message-Objekt übergeben, wie im folgenden Beispiel gezeigt:
val message1 = NotificationCompat.MessagingStyle.Message( messages[0].text, messages[0].time, messages[0].sender ) val message2 = NotificationCompat.MessagingStyle.Message( messages[1].text, messages[1].time, messages[1].sender ) notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.MessagingStyle(Person.Builder().setName("Me").build()) .addMessage(message1) .addMessage(message2) ) .build()
NotificationCompat.MessagingStyle.
Wenn Sie NotificationCompat.MessagingStyle verwenden, werden alle Werte, die für setContentTitle() und setContentText() angegeben sind, ignoriert.
Sie können setConversationTitle() aufrufen, um einen Titel hinzuzufügen, der über der Unterhaltung angezeigt wird. Das kann der vom Nutzer erstellte Name der Gruppe sein oder, falls die Gruppe keinen bestimmten Namen hat, eine Liste der Teilnehmer der Unterhaltung.
Legen Sie keinen Unterhaltungstitel für Einzelchats fest, da das System das Vorhandensein dieses Felds als Hinweis darauf verwendet, dass es sich um eine Gruppe handelt.
Dieser Stil wird nur auf Geräten mit Android 7.0 (API‑Level 24) und höher angewendet.
Wenn Sie die Kompatibilitätsbibliothek (NotificationCompat) verwenden, wie oben gezeigt, wird für Benachrichtigungen mit MessagingStyle automatisch ein unterstützter erweiterter Benachrichtigungsstil verwendet.
Wenn Sie eine solche Benachrichtigung für eine Chatunterhaltung erstellen, fügen Sie eine Direktantwortaktion hinzu.
Benachrichtigung mit Mediensteuerung erstellen
Wenden Sie MediaStyleNotificationHelper.MediaStyle an, um Steuerelemente für die Medienwiedergabe und Informationen zur Wiedergabe anzuzeigen.
Geben Sie die zugehörige MediaSession im Konstruktor an. So kann Android die richtigen Informationen zu Ihren Medien anzeigen.
Rufen Sie addAction() bis zu fünfmal auf, um bis zu fünf Symbolschaltflächen anzuzeigen.
Rufen Sie setLargeIcon() auf, um das Albumcover festzulegen.
Im Gegensatz zu den anderen Benachrichtigungsstilen können Sie mit MediaStyle auch die Ansicht mit minimierter Größe ändern, indem Sie drei Aktionsschaltflächen angeben, die ebenfalls in der minimierten Ansicht angezeigt werden. Geben Sie dazu die Indexe der Aktionsbuttons an setShowActionsInCompactView() an.
Im folgenden Beispiel wird gezeigt, wie Sie eine Benachrichtigung mit Mediensteuerung erstellen:
notification = NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(com.example.compose.snippets.R.drawable.play) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.previous, "Previous", null /* Add valid intent */) // #0 .addAction(R.drawable.pause, "Pause", null /* Add valid intent */) // #1 .addAction(R.drawable.next, "Next", null /* Add valid intent */) // #2 // Apply the media style template. .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button */)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(bitmapImage) .build()
MediaStyleNotificationHelper.MediaStyle.
Zusätzliche Ressourcen
Weitere Informationen zu MediaStyle und maximierten Benachrichtigungen finden Sie in den folgenden Referenzen.