Fix MessagingStyle HUNs

- Supply the appropriate HUN view
- Make sure we can properly parcel and unparcel the Style

Change-Id: I86c70b9c41689da98f45219b244aac0dec461002
Fixes: 28400885
This commit is contained in:
Adrian Roos
2016-04-26 16:38:47 -07:00
parent 9fa8b54589
commit dedd1df2f2

View File

@@ -4461,8 +4461,8 @@ public class Notification implements Parcelable
mAllowGeneratedReplies = extras.getBoolean(EXTRA_ALLOW_GENERATED_REPLIES,
mAllowGeneratedReplies);
Parcelable[] parcelables = extras.getParcelableArray(EXTRA_MESSAGES);
if (parcelables != null && parcelables instanceof Bundle[]) {
mMessages = Message.getMessagesFromBundleArray((Bundle[]) parcelables);
if (parcelables != null && parcelables instanceof Parcelable[]) {
mMessages = Message.getMessagesFromBundleArray(parcelables);
}
}
@@ -4558,6 +4558,25 @@ public class Notification implements Parcelable
return sb;
}
/**
* @hide
*/
@Override
public RemoteViews makeHeadsUpContentView() {
Message m = findLatestIncomingMessage();
CharSequence title = mConversationTitle != null
? mConversationTitle
: (m == null) ? null : m.mSender;
CharSequence text = (m == null)
? null
: mConversationTitle != null ? makeMessageLine(m) : m.mText;
return mBuilder.applyStandardTemplateWithActions(mBuilder.getBigBaseLayoutResource(),
false /* hasProgress */,
title,
text);
}
private static TextAppearanceSpan makeFontColorSpan(int color) {
return new TextAppearanceSpan(null, 0, 0,
ColorStateList.valueOf(color), null);
@@ -4691,12 +4710,14 @@ public class Notification implements Parcelable
return bundles;
}
static List<Message> getMessagesFromBundleArray(Bundle[] bundles) {
static List<Message> getMessagesFromBundleArray(Parcelable[] bundles) {
List<Message> messages = new ArrayList<>(bundles.length);
for (int i = 0; i < bundles.length; i++) {
Message message = getMessageFromBundle(bundles[i]);
if (message != null) {
messages.add(message);
if (bundles[i] instanceof Bundle) {
Message message = getMessageFromBundle((Bundle)bundles[i]);
if (message != null) {
messages.add(message);
}
}
}
return messages;