Maximierbare Benachrichtigung erstellen

Eine einfache Benachrichtigung enthält in der Regel einen Titel, eine Textzeile und Aktionen, die der Nutzer ausführen kann. Wenn Sie weitere Informationen bereitstellen möchten, können Sie große, maximierbare Benachrichtigungen erstellen, indem Sie eine von mehreren 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 die 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 Miniaturansicht angezeigt werden soll, während die Benachrichtigung minimiert ist, wie in der folgenden Abbildung gezeigt, 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()

Eine minimierte Benachrichtigung und eine maximierte Benachrichtigung mit einem blauen Bild
Abbildung 1. Eine Benachrichtigung mit NotificationCompat.BigPictureStyle.

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()

Eine minimierte und eine maximierte Benachrichtigung mit BigTextStyle
Abbildung 2. Eine Benachrichtigung mit 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 Textteile hinzufügen, die jeweils auf eine Zeile gekürzt werden, anstatt der einen durchgehenden 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 wie in der folgenden Abbildung:

Eine maximierte Benachrichtigung im Posteingangsstil
Abbildung 3. Eine maximierte Benachrichtigung im Posteingangsstil Benachrichtigung.

Unterhaltung in einer Benachrichtigung anzeigen

Wenden Sie NotificationCompat.MessagingStyle an, um sequenzielle 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, 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 Uhrzeit des Empfangs 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()

Eine Benachrichtigung im Stil einer Messaging-App
Abbildung 4. Eine Benachrichtigung mit NotificationCompat.MessagingStyle.

Bei Verwendung von NotificationCompat.MessagingStyle werden alle Werte, die für setContentTitle() und setContentText() angegeben wurden, 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, wenn sie 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 Gruppenunterhaltung handelt.

Dieser Stil wird nur auf Geräten mit Android 7.0 (API-Level 24) und höher angewendet. Wenn Sie die Compatibility-Bibliothek (NotificationCompat) verwenden, wie oben gezeigt, wird für Benachrichtigungen mit MessagingStyle automatisch ein unterstützter maximierter Benachrichtigungsstil verwendet.

Wenn Sie eine solche Benachrichtigung für eine Chatunterhaltung erstellen, fügen Sie eine Aktion für die direkte Antwort hinzu.

Benachrichtigung mit Mediensteuerelementen erstellen

Wenden Sie MediaStyleNotificationHelper.MediaStyle an, um Steuerelemente für die Medienwiedergabe und Informationen zum Titel 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 Schaltflächen mit Symbolen 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. Geben Sie dazu die Indizes der Aktionsbuttons an setShowActionsInCompactView() an.

Das folgende Beispiel zeigt, wie Sie eine Benachrichtigung mit Mediensteuerelementen 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()

Benachrichtigung mit Medienstil
Abbildung 5. Eine Benachrichtigung mit MediaStyleNotificationHelper.MediaStyle.

Zusätzliche Ressourcen

Weitere Informationen zu MediaStyle und maximierbaren Benachrichtigungen finden Sie in den folgenden Referenzen.