Maximierbare Benachrichtigung erstellen

Eine einfache Benachrichtigung enthält in der Regel einen Titel, eine Textzeile und Aktionen, die der Nutzer als Reaktion ausführen kann. Wenn Sie mehr Informationen bereitstellen möchten, können Sie große, maximierbare Benachrichtigungen erstellen, indem Sie eine der in diesem Dokument beschriebenen Benachrichtigungsvorlagen anwenden.

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

  val notification = NotificationCompat.Builder(context, CHANNEL_ID)
          .setSmallIcon(R.drawable.new_post)
          .setContentTitle(imageTitle)
          .setContentText(imageDescription)
          .setStyle(NotificationCompat.BigPictureStyle()
                  .bigPicture(myBitmap))
          .build()

Wenn das Bild nur als Thumbnail 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:

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

  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()
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 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, sind nur die ersten sechs sichtbar.

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

Das Ergebnis sieht so aus:

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

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 es ein einheitliches Layout für jede Nachricht bietet, indem der Absendername und der Nachrichtentext separat behandelt 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].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()
Eine Benachrichtigung im Stil einer Messaging-App
Abbildung 4. Eine Benachrichtigung mit 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, 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 Aktion für die direkte Antwort hinzu.

Benachrichtigung mit Mediensteuerung erstellen

Wenden Sie MediaStyleNotificationHelper.MediaStyle an, um die Steuerung der 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 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 Aktionsschaltflächen für setShowActionsInCompactView() an.

Das folgende Beispiel zeigt, wie Sie eine Benachrichtigung mit Mediensteuerung erstellen:

  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()
Benachrichtigung mit Medienstil
Abbildung 5. Eine Benachrichtigung mit MediaStyleNotificationHelper.MediaStyle.

Zusätzliche Ressourcen

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