diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index db775d87c7dae..2a3e3d8ba01b7 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -4468,8 +4468,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); } } @@ -4565,6 +4565,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); @@ -4698,12 +4717,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;