Eine einfache Benachrichtigung enthält in der Regel einen Titel, eine Textzeile und Aktionen, die der Nutzer als Antwort ausführen kann. Wenn du mehr Informationen bereitstellen möchtest, kannst du große, maximierbare Benachrichtigungen erstellen. Dazu wendest du eine der verschiedenen Benachrichtigungsvorlagen an, die in diesem Dokument beschrieben werden.
Erstelle 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 Thumbnail angezeigt werden soll, während die Benachrichtigung minimiert ist, wie in der folgenden Abbildung dargestellt, rufen Sie setLargeIcon() auf und übergeben Sie das Bild. Rufe dann BigPictureStyle.bigLargeIcon() auf und übergib null, damit das große Symbol ausgeblendet wird, 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.
Großen Textblock hinzufügen
Wende 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.
Wenn Sie eine neue Zeile hinzufügen möchten, rufen Sie addLine() bis zu sechsmal auf, wie im folgenden Beispiel gezeigt. Wenn Sie mehr als sechs Zeilen hinzufügen, sind nur die ersten sechs sichtbar.
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
Wenden Sie NotificationCompat.MessagingStyle an, um aufeinanderfolgende Nachrichten zwischen einer beliebigen Anzahl von Personen anzuzeigen. Das ist ideal für Messaging-Apps, da es ein einheitliches Layout für jede Nachricht bietet, indem der Name des Absenders und der Nachrichtentext separat verarbeitet werden. 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 ignoriert, die für setContentTitle() und setContentText() angegeben wurden.
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, wenn sie keinen bestimmten Namen hat, eine Liste der Teilnehmer der Unterhaltung.
Legen Sie für Einzelchats keinen Titel fest, da das System das Vorhandensein dieses Felds als Hinweis darauf verwendet, dass es sich 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 oben gezeigt, werden Benachrichtigungen mit MessagingStyle automatisch auf einen unterstützten erweiterten Benachrichtigungsstil zurückgesetzt.
Wenn Sie eine solche Benachrichtigung für eine Chatunterhaltung erstellen, fügen Sie eine Direktantwortaktion hinzu.
Benachrichtigung mit Mediensteuerung erstellen
Wende MediaStyleNotificationHelper.MediaStyle an, um Steuerelemente für die Medienwiedergabe und Titelinformationen anzuzeigen.
Geben Sie im Konstruktor die zugehörige 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.
Rufe setLargeIcon() auf, um das Albumcover festzulegen.
Im Gegensatz zu den anderen Benachrichtigungsstilen kannst du bei MediaStyle auch die Inhaltsansicht in der minimierten Größe ändern, indem du drei Aktionsschaltflächen angibst, die auch in der minimierten Ansicht angezeigt werden. Geben Sie dazu die Aktionsbutton-Indizes für setShowActionsInCompactView() an.
Das folgende Beispiel zeigt, wie eine Benachrichtigung mit Mediensteuerung erstellt wird:
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 maximierbaren Benachrichtigungen finden Sie in den folgenden Referenzen.