Eine einfache Benachrichtigung umfasst in der Regel einen Titel, eine Textzeile und Aktionen, die der Nutzer als Antwort ausführen kann. Um weitere Informationen bereitzustellen, können Sie große, maximierbare Benachrichtigungen erstellen, indem Sie eine der verschiedenen Benachrichtigungsvorlagen anwenden, wie in diesem Dokument beschrieben.
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 für jede Vorlage Informationen an, wie in den folgenden Beispielen gezeigt.
Großes Bild hinzufügen
Übergeben Sie eine Instanz von NotificationCompat.BigPictureStyle
an setStyle()
, um der Benachrichtigung ein Bild hinzuzufügen.
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap)) .build();
Damit das Bild nur als Miniaturansicht angezeigt wird, während die Benachrichtigung minimiert wird (siehe folgende Abbildung), rufen Sie setLargeIcon()
auf und übergeben Sie das Bild. Rufen Sie dann BigPictureStyle.bigLargeIcon()
auf und übergeben Sie null
, sodass das große Symbol verschwindet, wenn die Benachrichtigung maximiert wird:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_post) .setContentTitle(imageTitle) .setContentText(imageDescription) .setLargeIcon(myBitmap) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(myBitmap) .bigLargeIcon(null)) .build();
Einen großen Textblock hinzufügen
Wenden Sie NotificationCompat.BigTextStyle
an, um Text im maximierten Inhaltsbereich der Benachrichtigung anzuzeigen:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_mail) .setContentTitle(emailObject.getSenderName()) .setContentText(emailObject.getSubject()) .setLargeIcon(emailObject.getSenderAvatar()) .setStyle(new NotificationCompat.BigTextStyle() .bigText(emailObject.getSubjectAndSnippet())) .build();
Benachrichtigungen 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 anstelle der von NotificationCompat.BigTextStyle
bereitgestellten durchgehenden Textzeile mehrere Inhaltstexte hinzufügen, die jeweils in einer Zeile gekürzt werden.
Zum Hinzufügen einer neuen Zeile können Sie addLine()
bis zu sechsmal aufrufen, wie im folgenden Beispiel gezeigt. Wenn Sie mehr als sechs Zeilen hinzufügen, sind nur die ersten sechs sichtbar.
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build()
Java
Notification notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.baseline_email_24) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.logo)) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build();
Das Ergebnis sieht in etwa so aus:
Unterhaltungen in Benachrichtigungen anzeigen
Wenden Sie NotificationCompat.MessagingStyle
an, um aufeinanderfolgende Nachrichten zwischen einer beliebigen Anzahl von Personen anzuzeigen. Dies ist ideal für Messaging-Apps, da es ein einheitliches Layout für jede Nachricht bietet, da der Name des Absenders und der Nachrichtentext separat verarbeitet werden und jede Nachricht mehrere Zeilen lang sein kann.
Wenn Sie eine neue Nachricht hinzufügen möchten, rufen Sie addMessage()
auf und übergeben Sie den Nachrichtentext, die empfangene Uhrzeit und den Namen des Absenders. Sie können diese Informationen auch als NotificationCompat.MessagingStyle.Message
-Objekt übergeben, wie im folgenden Beispiel gezeigt:
Kotlin
val message1 = NotificationCompat.MessagingStyle.Message( messages[0].getText(), messages[0].getTime(), messages[0].getSender()) val message2 = NotificationCompat.MessagingStyle.Message( messages[1].getText(), messages[1].getTime(), messages[1].getSender()) val notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle( NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build()
Java
NotificationCompat.MessagingStyle.Message message1 = new NotificationCompat.MessagingStyle.Message(messages[0].getText(), messages[0].getTime(), messages[0].getSender()); NotificationCompat.MessagingStyle.Message message2 = new NotificationCompat.MessagingStyle.Message(messages[1].getText(), messages[1].getTime(), messages[1].getSender()); Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.new_message) .setStyle(new NotificationCompat.MessagingStyle(resources.getString(R.string.reply_name)) .addMessage(message1) .addMessage(message2)) .build();
Bei Verwendung von NotificationCompat.MessagingStyle
werden alle Werte für setContentTitle()
und setContentText()
ignoriert.
Du kannst setConversationTitle()
aufrufen, um einen Titel hinzuzufügen, der über der Unterhaltung angezeigt wird. Dies kann der vom Nutzer erstellte Name der Gruppe oder, wenn er keinen bestimmten Namen hat, eine Liste der Teilnehmer der Unterhaltung sein. Geben Sie in Einzelchats keinen Titel für die Unterhaltung an, da das System das Vorhandensein dieses Feldes als Hinweis darauf verwendet, dass es sich bei der Unterhaltung um eine Gruppe handelt.
Dieser Stil gilt nur für Geräte mit Android 7.0 (API-Level 24) und höher.
Wenn Sie die Kompatibilitätsbibliothek (NotificationCompat
) verwenden, wie bereits gezeigt, greifen Benachrichtigungen mit MessagingStyle
automatisch auf einen unterstützten erweiterten Benachrichtigungsstil zurück.
Wenn Sie eine Benachrichtigung wie diese für eine Chatunterhaltung erstellen, fügen Sie eine Direktantwortaktion hinzu.
Benachrichtigung mit Mediensteuerung erstellen
Wenden Sie MediaStyleNotificationHelper.MediaStyle
an, um die Wiedergabesteuerung für Medien und Titelinformationen anzuzeigen.
Geben Sie im Konstruktor den verknüpften MediaSession
an. So kann Android die richtigen Informationen zu deinen 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 minimierte Inhaltsansicht ändern, indem Sie drei Aktionsschaltflächen angeben, die auch in der minimierten Ansicht angezeigt werden. Dazu müssen Sie die Indexe der Aktionsschaltflächen für setShowActionsInCompactView()
angeben.
Das folgende Beispiel zeigt, wie eine Benachrichtigung mit Mediensteuerelementen erstellt wird:
Kotlin
val notification = NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button \*/)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build()
Java
Notification notification = new NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(R.drawable.ic_stat_player) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.ic_prev, "Previous", prevPendingIntent) // #0 .addAction(R.drawable.ic_pause, "Pause", pausePendingIntent) // #1 .addAction(R.drawable.ic_next, "Next", nextPendingIntent) // #2 // Apply the media style template. .setStyle(new MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button */)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(albumArtBitmap) .build();
Weitere Informationen
In den folgenden Referenzen finden Sie weitere Informationen zu MediaStyle
und maximierbaren Benachrichtigungen.