# Print output for @column tags ?>
Developers

- Design
- Develop
- Distribute

Developer Console

## Most visited

## Recently visited

## Results for

Summary: Nested Classes | Constants | Inherited Fields | Ctors | Methods | Inherited Methods

# Notification.MessagingStyle

`public static class Notification.MessagingStyle`
`` `extends Notification.Style` ``

java.lang.Object
↳ | android.app.Notification.Style
| ↳ | android.app.Notification.MessagingStyle

Helper class for generating large-format notifications that include multiple back-and-forth messages of varying types between any number of people.

If the platform does not provide large-format notifications, this method has no effect. The user will always see the normal notification view.

If the app is targeting Android P and above, it is required to use the `Person` class in order to get an optimal rendering of the notification and its avatars. For conversations involving multiple people, the app should also make sure that it marks the conversation as a group with `setGroupConversation(boolean)`.

This class is a "rebuilder": It attaches to a Builder object and modifies its behavior. Here's an example of how this may be used:

     Person user = new Person.Builder().setIcon(userIcon).setName(userName).build();
     MessagingStyle style = new MessagingStyle(user)
          .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getPerson())
          .addMessage(messages[2].getText(), messages[2].getTime(), messages[2].getPerson())
          .setGroupConversation(hasMultiplePeople());

     Notification noti = new Notification.Builder()
         .setContentTitle("2 new messages with " + sender.toString())
         .setContentText(subject)
         .setSmallIcon(R.drawable.new_message)
         .setLargeIcon(aBitmap)
         .setStyle(style)
         .build();

## Summary

### Nested classes
`class` | `Notification.MessagingStyle.Message`

### Constants
`int` | `MAXIMUM_RETAINED_MESSAGES` The maximum number of messages that will be retained in the Notification itself (the number displayed is up to the platform).

### Inherited fields
From class `android.app.Notification.Style`
`protected Notification.Builder` | `mBuilder`

### Public constructors
`MessagingStyle(CharSequence userDisplayName)` This constructor is deprecated. use `MessagingStyle(Person)`
`MessagingStyle(Person user)`

### Public methods
`Notification.MessagingStyle` | `addHistoricMessage(Notification.MessagingStyle.Message message)` Adds a `Message` for historic context in this notification.
`Notification.MessagingStyle` | `addMessage(CharSequence text, long timestamp, CharSequence sender)` This method is deprecated. use `addMessage(java.lang.CharSequence, long, android.app.Person)`
`Notification.MessagingStyle` | `addMessage(Notification.MessagingStyle.Message message)` Adds a `Message` for display in this notification.
`Notification.MessagingStyle` | `addMessage(CharSequence text, long timestamp, Person sender)` Adds a message for display by this notification.
`CharSequence` | `getConversationTitle()` Return the title to be displayed on this conversation.
`List<Notification.MessagingStyle.Message>` | `getHistoricMessages()` Gets the list of historic `Message`s in the notification.
`List<Notification.MessagingStyle.Message>` | `getMessages()` Gets the list of `Message` objects that represent the notification
`Person` | `getUser()`
`CharSequence` | `getUserDisplayName()` This method is deprecated. use `getUser()` instead
`boolean` | `isGroupConversation()` Returns `true` if this notification represents a group conversation, otherwise `false`.
`Notification.MessagingStyle` | `setConversationTitle(CharSequence conversationTitle)` Sets the title to be displayed on this conversation.
`Notification.MessagingStyle` | `setGroupConversation(boolean isGroupConversation)` Sets whether this conversation notification represents a group.

### Inherited methods
From class `android.app.Notification.Style`
`Notification` | `build()` Calls `Notification.Builder.build()` on the Builder this Style is attached to.
`void` | `checkBuilder()`
`RemoteViews` | `getStandardView(int layoutId)`
`void` | `internalSetBigContentTitle(CharSequence title)` Overrides ContentTitle in the big form of the template.
`void` | `internalSetSummaryText(CharSequence cs)` Set the first line of text after the detail section in the big form of the template.
`void` | `setBuilder(Notification.Builder builder)`
From class `java.lang.Object`
`Object` | `clone()` Creates and returns a copy of this object.
`boolean` | `equals(Object obj)` Indicates whether some other object is "equal to" this one.
`void` | `finalize()` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
`final Class<?>` | `getClass()` Returns the runtime class of this `Object`.
`int` | `hashCode()` Returns a hash code value for the object.
`final void` | `notify()` Wakes up a single thread that is waiting on this object's monitor.
`final void` | `notifyAll()` Wakes up all threads that are waiting on this object's monitor.
`String` | `toString()` Returns a string representation of the object.
`final void` | `wait(long timeout, int nanos)` Causes the current thread to wait until another thread invokes the `notify()` method or the `notifyAll()` method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed.
`final void` | `wait(long timeout)` Causes the current thread to wait until either another thread invokes the `notify()` method or the `notifyAll()` method for this object, or a specified amount of time has elapsed.
`final void` | `wait()` Causes the current thread to wait until another thread invokes the `notify()` method or the `notifyAll()` method for this object.

## Constants

### MAXIMUM_RETAINED_MESSAGES

    public static final int MAXIMUM_RETAINED_MESSAGES

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

Constant Value: 25 (0x00000019)

## Public constructors

### MessagingStyle

    public MessagingStyle (CharSequence userDisplayName)

This constructor is deprecated.
use `MessagingStyle(Person)`

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(android.app.Notification.MessagingStyle.Message)` This value cannot be `null`.

### MessagingStyle

    public MessagingStyle (Person user)

Parameters
`user` | `Person`: Required - The person displayed for any messages that are sent by the user. Any messages added with `addMessage(android.app.Notification.MessagingStyle.Message)` who don't have a Person associated with it will be displayed as if they were sent by this user. The user also needs to have a valid name associated with it, which will be enforced starting in Android P. This value cannot be `null`.

## Public methods

### addHistoricMessage

    public Notification.MessagingStyle addHistoricMessage (Notification.MessagingStyle.Message message)

Adds a `Message` for historic context in this notification.

Messages should be added as historic if they are not the main subject of the notification but may give context to a conversation. The system may choose to present them only when relevant, e.g. when replying to a message through a `RemoteInput`.

The messages should be added in chronologic order, i.e. the oldest first, the newest last.

Parameters
`message` | `Notification.MessagingStyle.Message`: The historic `Message` to be added

Returns
`Notification.MessagingStyle` | this object for method chaining

### addMessage

    public Notification.MessagingStyle addMessage (CharSequence text,
                    long timestamp,
                    CharSequence sender)

This method is deprecated.
use `addMessage(java.lang.CharSequence, long, android.app.Person)`

Adds a message for display by this notification. Convenience call for a simple `Message` in `addMessage(android.app.Notification.MessagingStyle.Message)`.

Parameters
`text` | `CharSequence`: A `CharSequence` to be displayed as the message content
`timestamp` | `long`: Time at which the message arrived
`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.

Returns
`Notification.MessagingStyle` | this object for method chaining

See also:

- `Notification.MessagingStyle.Message.Message(CharSequence, long, CharSequence)`

### addMessage

    public Notification.MessagingStyle addMessage (Notification.MessagingStyle.Message message)

Adds a `Message` for display in this notification.

The messages should be added in chronologic order, i.e. the oldest first, the newest last.

Parameters
`message` | `Notification.MessagingStyle.Message`: The `Message` to be displayed

Returns
`Notification.MessagingStyle` | this object for method chaining

### addMessage

    public Notification.MessagingStyle addMessage (CharSequence text,
                    long timestamp,
                    Person sender)

Adds a message for display by this notification. Convenience call for a simple `Message` in `addMessage(android.app.Notification.MessagingStyle.Message)`.

Parameters
`text` | `CharSequence`: A `CharSequence` to be displayed as the message content This value cannot be `null`.
`timestamp` | `long`: Time at which the message arrived
`sender` | `Person`: The `Person` who sent the message. Should be `null` for messages by the current user, in which case the platform will insert the user set in `MessagingStyle(Person)`. This value may be `null`.

Returns
`Notification.MessagingStyle` | this object for method chaining

See also:

- `Notification.MessagingStyle.Message.Message(CharSequence, long, CharSequence)`

### getConversationTitle

    public CharSequence getConversationTitle ()

Return the title to be displayed on this conversation. May return `null`.

Returns
`CharSequence` |

### getHistoricMessages

    public List<Notification.MessagingStyle.Message> getHistoricMessages ()

Gets the list of historic `Message`s in the notification.

Returns
`List<Notification.MessagingStyle.Message>` |

### getMessages

    public List<Notification.MessagingStyle.Message> getMessages ()

Gets the list of `Message` objects that represent the notification

Returns
`List<Notification.MessagingStyle.Message>` |

### getUser

    public Person getUser ()

Returns
`Person` | the user to be displayed for any replies sent by the user This value cannot be `null`.

### getUserDisplayName

    public CharSequence getUserDisplayName ()

This method is deprecated.
use `getUser()` instead

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

Returns
`CharSequence` |

### isGroupConversation

    public boolean isGroupConversation ()

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`, 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. From `Build.VERSION_CODES#P` forward, this method returns what's set by `setGroupConversation(boolean)` allowing for named, non-group conversations.

Returns
`boolean` |

See also:

- `setConversationTitle(CharSequence)`

### setConversationTitle

    public Notification.MessagingStyle setConversationTitle (CharSequence conversationTitle)

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

Starting in `Build.VERSION_CODES#R`

Parameters
`conversationTitle` | `CharSequence`

Returns
`Notification.MessagingStyle` |

### setGroupConversation

    public Notification.MessagingStyle setGroupConversation (boolean isGroupConversation)

Sets whether this conversation notification represents a group. If the app is targeting Android P, this is required if the app wants to display the largeIcon set with `Notification.Builder#setLargeIcon(Bitmap)`, otherwise it will be hidden.

Parameters
`isGroupConversation` | `boolean`: `true` if the conversation represents a group, `false` otherwise.

Returns
`Notification.MessagingStyle` | this object for method chaining

Full name *
Email address *
Company / developer name
One of your Play Store app URLs *
Which best describes your business:*
Apps
Games
Apps & Games
*
*