Maximierbare Benachrichtigung erstellen

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();
Ein Bild mit einer minimierten Benachrichtigung und einer maximierten Benachrichtigung mit einem blauen Bild
Abbildung 1: Eine Benachrichtigung mit NotificationCompat.BigPictureStyle.

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();
Ein Bild, das eine minimierte und eine maximierte Benachrichtigung mithilfe von BigTextStyle zeigt
Abbildung 2. Eine Benachrichtigung mit NotificationCompat.BigTextStyle.

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:

Ein Bild, auf dem eine Benachrichtigung im Stil eines maximierten Posteingangs zu sehen ist
Abbildung 3: Eine Benachrichtigung im Stil eines maximierten Posteingangs.

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();
Ein Bild, auf dem eine Benachrichtigung im Stil einer Benachrichtigung zu sehen ist
Abbildung 4: Eine Benachrichtigung mit NotificationCompat.MessagingStyle.

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();
Ein Bild mit einer Benachrichtigung im Medienstil
Abbildung 5: Eine Benachrichtigung mit MediaStyleNotificationHelper.MediaStyle.

Weitere Informationen

In den folgenden Referenzen finden Sie weitere Informationen zu MediaStyle und maximierbaren Benachrichtigungen.