From dedd1df2f22afd6bc3e544822e5526b0343145ef Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Tue, 26 Apr 2016 16:38:47 -0700 Subject: [PATCH] Fix MessagingStyle HUNs - Supply the appropriate HUN view - Make sure we can properly parcel and unparcel the Style Change-Id: I86c70b9c41689da98f45219b244aac0dec461002 Fixes: 28400885 --- core/java/android/app/Notification.java | 33 ++++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index d7705b9ca830e..e4d8dec6423ff 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -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 getMessagesFromBundleArray(Bundle[] bundles) { + static List getMessagesFromBundleArray(Parcelable[] bundles) { List 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;