Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

MessagingStyle

open class MessagingStyle : NotificationCompat.Style
kotlin.Any
   ↳ androidx.core.app.NotificationCompat.Style
   ↳ androidx.core.app.NotificationCompat.MessagingStyle

Helper class for generating large-format notifications that include multiple back-and-forth messages of varying types between any number of people.
In order to get a backwards compatible behavior, the app needs to use the v7 version of the notification builder together with this style, otherwise the user will see the normal notification view.
Use MessagingStyle#setConversationTitle(CharSequence) to set a conversation title for group chats with more than two people. This could be the user-created name of the group or, if it doesn't have a specific name, a list of the participants in the conversation. Do not set a conversation title for one-on-one chats, since platforms use the existence of this field as a hint that the conversation is a group.
This class is a "rebuilder": It attaches to a Builder object and modifies its behavior, like so:

Notification notification = new Notification.Builder()
          .setContentTitle("2 new messages with " + sender.toString())
          .setContentText(subject)
          .setSmallIcon(R.drawable.new_message)
          .setLargeIcon(aBitmap)
          .setStyle(new Notification.MessagingStyle(resources.getString(R.string.reply_name))
              .addMessage(messages[0].getText(), messages[0].getTime(), messages[0].getSender())
              .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getSender()))
          .build();
      

Summary

Nested classes

Constants

static Int

The maximum number of messages that will be retained in the Notification itself (the number displayed is up to the platform).

Public constructors

<init>(@NonNull userDisplayName: CharSequence)

<init>(@NonNull user: Person)

Creates a new MessagingStyle object.

Public methods

open Unit

open NotificationCompat.MessagingStyle!
addMessage(text: CharSequence!, timestamp: Long, sender: CharSequence!)

Adds a message for display by this notification.

open NotificationCompat.MessagingStyle!
addMessage(text: CharSequence!, timestamp: Long, person: Person!)

Adds a message for display by this notification.

open NotificationCompat.MessagingStyle!

Adds a Message for display in this notification.

open static NotificationCompat.MessagingStyle?

Retrieves a MessagingStyle from a Notification, enabling an application that has set a MessagingStyle using NotificationCompat or android.app.Notification.Builder to send messaging information to another application using NotificationCompat, regardless of the API level of the system.

open CharSequence?

Return the title to be displayed on this conversation.

open MutableList<NotificationCompat.MessagingStyle.Message!>!

Gets the list of Message objects that represent the notification

open Person!

Returns the person to be used for any replies sent by the user.

open CharSequence!

Returns the name to be displayed for any replies sent by the user.

open Boolean

Returns true if this notification represents a group conversation, otherwise false.

open NotificationCompat.MessagingStyle!
setConversationTitle(@Nullable conversationTitle: CharSequence?)

Sets the title to be displayed on this conversation.

open NotificationCompat.MessagingStyle!
setGroupConversation(isGroupConversation: Boolean)

Sets whether this conversation notification represents a group.

Inherited functions

Constants

MAXIMUM_RETAINED_MESSAGES

static val MAXIMUM_RETAINED_MESSAGES: Int

The maximum number of messages that will be retained in the Notification itself (the number displayed is up to the platform).

Value: 25

Public constructors

<init>

MessagingStyle(@NonNull userDisplayName: CharSequence)

Deprecated: Use MessagingStyle(Person) instead.

Parameters
userDisplayName CharSequence: Required - the name to be displayed for any replies sent by the user before the posting app reposts the notification with those messages after they've been actually sent and in previous messages sent by the user added in addMessage(Message)

<init>

MessagingStyle(@NonNull user: Person)

Creates a new MessagingStyle object. Note that Person must have a non-empty name.

Parameters
user Person: This Person's name will be shown when this app's notification is being replied to. It's used temporarily so the app has time to process the send request and repost the notification with updates to the conversation.

Public methods

addCompatExtras

open fun addCompatExtras(extras: Bundle!): Unit

addMessage

open fun addMessage(text: CharSequence!, timestamp: Long, sender: CharSequence!): NotificationCompat.MessagingStyle!

Deprecated: Use addMessage(CharSequence, long, Person) or addMessage(Message)

Adds a message for display by this notification. Convenience call for a simple Message in addMessage(Message)

Parameters
text CharSequence!: A CharSequence to be displayed as the message content
timestamp CharSequence!: Time at which the message arrived in ms since Unix epoch
sender CharSequence!: A CharSequence to be used for displaying the name of the sender. Should be null for messages by the current user, in which case the platform will insert getUserDisplayName(). Should be unique amongst all individuals in the conversation, and should be consistent during re-posts of the notification.
Return
NotificationCompat.MessagingStyle!: this object for method chaining

See Also

  • Message#NotificationCompat.MessagingStyle.Message(CharSequence, long, CharSequence)

addMessage

open fun addMessage(text: CharSequence!, timestamp: Long, person: Person!): NotificationCompat.MessagingStyle!

Adds a message for display by this notification. Convenience call for addMessage(Message).

Return
NotificationCompat.MessagingStyle!: this for method chaining

See Also

  • Message#NotificationCompat.MessagingStyle.Message(CharSequence, long, Person)

addMessage

open fun addMessage(message: NotificationCompat.MessagingStyle.Message!): NotificationCompat.MessagingStyle!

Adds a Message for display in this notification.

Parameters
message NotificationCompat.MessagingStyle.Message!: The Message to be displayed
Return
NotificationCompat.MessagingStyle!: this object for method chaining

extractMessagingStyleFromNotification

@Nullable open static fun extractMessagingStyleFromNotification(notification: Notification!): NotificationCompat.MessagingStyle?

Retrieves a MessagingStyle from a Notification, enabling an application that has set a MessagingStyle using NotificationCompat or android.app.Notification.Builder to send messaging information to another application using NotificationCompat, regardless of the API level of the system.

Return
NotificationCompat.MessagingStyle?: null if there is no MessagingStyle set, or if the SDK version is < 16 (JellyBean).

getConversationTitle

@Nullable open fun getConversationTitle(): CharSequence?

Return the title to be displayed on this conversation. Can be null.

getMessages

open fun getMessages(): MutableList<NotificationCompat.MessagingStyle.Message!>!

Gets the list of Message objects that represent the notification

getUser

open fun getUser(): Person!

Returns the person to be used for any replies sent by the user.

getUserDisplayName

open fun getUserDisplayName(): CharSequence!

Deprecated: Use getUser() instead.

Returns the name to be displayed for any replies sent by the user.

isGroupConversation

open fun isGroupConversation(): Boolean

Returns true if this notification represents a group conversation, otherwise false.

If the application that generated this MessagingStyle targets an SDK version less than Build.VERSION_CODES#P and setGroupConversation(boolean) was not called, this method becomes dependent on whether or not the conversation title is set; returning true if the conversation title is a non-null value, or false otherwise. This is to maintain backwards compatibility. Regardless, has precedence over this legacy behavior. From P forward, setConversationTitle(CharSequence) has no affect on group conversation status.

setConversationTitle

open fun setConversationTitle(@Nullable conversationTitle: CharSequence?): NotificationCompat.MessagingStyle!

Sets the title to be displayed on this conversation. May be set to null.

This API's behavior was changed in SDK version Build.VERSION_CODES#P. If your application's target version is less than Build.VERSION_CODES#P, setting a conversation title to a non-null value will make isGroupConversation() return true and passing null will make it return false. This behavior can be overridden by calling setGroupConversation(boolean) regardless of SDK version. In P and above, this method does not affect group conversation settings.

Parameters
conversationTitle CharSequence?: Title displayed for this conversation
Return
NotificationCompat.MessagingStyle!: this object for method chaining

setGroupConversation

open fun setGroupConversation(isGroupConversation: Boolean): NotificationCompat.MessagingStyle!

Sets whether this conversation notification represents a group.

Parameters
isGroupConversation Boolean: true if the conversation represents a group, false otherwise.
Return
NotificationCompat.MessagingStyle!: this object for method chaining