summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alexander Hills <ahills@google.com> 2016-04-22 18:32:48 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-04-22 18:32:49 +0000
commit9ef0ce1749e626a47d669a3f4b059ba748d2e69e (patch)
treec35c21705d234d388430bb26ff04e57ce541c8dc
parent6c83c7aa5f84680ffd53d3e318279cbead8b1af5 (diff)
parentd9b04d956f7ad8605758c38a93e4b61b2816562a (diff)
Merge "Changes Message from using parcels to bundles" into nyc-dev
-rw-r--r--api/current.txt7
-rw-r--r--api/system-current.txt7
-rw-r--r--api/test-current.txt7
-rw-r--r--core/java/android/app/Notification.java129
4 files changed, 71 insertions, 79 deletions
diff --git a/api/current.txt b/api/current.txt
index 9bfd0102aea4..b8b9079a780c 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -4927,6 +4927,7 @@ package android.app {
field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
field public static final java.lang.String EXTRA_CHRONOMETER_COUNTS_DOWN = "android.chronometerCountsDown";
field public static final java.lang.String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+ field public static final java.lang.String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
field public static final java.lang.String EXTRA_INFO_TEXT = "android.infoText";
field public static final java.lang.String EXTRA_LARGE_ICON = "android.largeIcon";
field public static final java.lang.String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
@@ -4947,7 +4948,6 @@ package android.app {
field public static final java.lang.String EXTRA_TEMPLATE = "android.template";
field public static final java.lang.String EXTRA_TEXT = "android.text";
field public static final java.lang.String EXTRA_TEXT_LINES = "android.textLines";
- field public static final java.lang.String EXTRA_THREAD_TITLE = "android.threadTitle";
field public static final java.lang.String EXTRA_TITLE = "android.title";
field public static final java.lang.String EXTRA_TITLE_BIG = "android.title.big";
field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
@@ -5200,17 +5200,14 @@ package android.app {
field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
}
- public static final class Notification.MessagingStyle.Message implements android.os.Parcelable {
+ public static final class Notification.MessagingStyle.Message {
ctor public Notification.MessagingStyle.Message(java.lang.CharSequence, long, java.lang.CharSequence);
- method public int describeContents();
method public java.lang.String getDataMimeType();
method public android.net.Uri getDataUri();
method public java.lang.CharSequence getSender();
method public java.lang.CharSequence getText();
method public long getTimestamp();
method public android.app.Notification.MessagingStyle.Message setData(java.lang.String, android.net.Uri);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.app.Notification.MessagingStyle.Message> CREATOR;
}
public static abstract class Notification.Style {
diff --git a/api/system-current.txt b/api/system-current.txt
index 9eeb8f7dea7e..06d95efe91be 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -5061,6 +5061,7 @@ package android.app {
field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
field public static final java.lang.String EXTRA_CHRONOMETER_COUNTS_DOWN = "android.chronometerCountsDown";
field public static final java.lang.String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+ field public static final java.lang.String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
field public static final java.lang.String EXTRA_INFO_TEXT = "android.infoText";
field public static final java.lang.String EXTRA_LARGE_ICON = "android.largeIcon";
field public static final java.lang.String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
@@ -5081,7 +5082,6 @@ package android.app {
field public static final java.lang.String EXTRA_TEMPLATE = "android.template";
field public static final java.lang.String EXTRA_TEXT = "android.text";
field public static final java.lang.String EXTRA_TEXT_LINES = "android.textLines";
- field public static final java.lang.String EXTRA_THREAD_TITLE = "android.threadTitle";
field public static final java.lang.String EXTRA_TITLE = "android.title";
field public static final java.lang.String EXTRA_TITLE_BIG = "android.title.big";
field public static final int FLAG_AUTOGROUP_SUMMARY = 1024; // 0x400
@@ -5335,17 +5335,14 @@ package android.app {
field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
}
- public static final class Notification.MessagingStyle.Message implements android.os.Parcelable {
+ public static final class Notification.MessagingStyle.Message {
ctor public Notification.MessagingStyle.Message(java.lang.CharSequence, long, java.lang.CharSequence);
- method public int describeContents();
method public java.lang.String getDataMimeType();
method public android.net.Uri getDataUri();
method public java.lang.CharSequence getSender();
method public java.lang.CharSequence getText();
method public long getTimestamp();
method public android.app.Notification.MessagingStyle.Message setData(java.lang.String, android.net.Uri);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.app.Notification.MessagingStyle.Message> CREATOR;
}
public static abstract class Notification.Style {
diff --git a/api/test-current.txt b/api/test-current.txt
index e4fad51b637f..a1047cbf069a 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -4927,6 +4927,7 @@ package android.app {
field public static final java.lang.String EXTRA_BIG_TEXT = "android.bigText";
field public static final java.lang.String EXTRA_CHRONOMETER_COUNTS_DOWN = "android.chronometerCountsDown";
field public static final java.lang.String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+ field public static final java.lang.String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
field public static final java.lang.String EXTRA_INFO_TEXT = "android.infoText";
field public static final java.lang.String EXTRA_LARGE_ICON = "android.largeIcon";
field public static final java.lang.String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
@@ -4947,7 +4948,6 @@ package android.app {
field public static final java.lang.String EXTRA_TEMPLATE = "android.template";
field public static final java.lang.String EXTRA_TEXT = "android.text";
field public static final java.lang.String EXTRA_TEXT_LINES = "android.textLines";
- field public static final java.lang.String EXTRA_THREAD_TITLE = "android.threadTitle";
field public static final java.lang.String EXTRA_TITLE = "android.title";
field public static final java.lang.String EXTRA_TITLE_BIG = "android.title.big";
field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
@@ -5200,17 +5200,14 @@ package android.app {
field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
}
- public static final class Notification.MessagingStyle.Message implements android.os.Parcelable {
+ public static final class Notification.MessagingStyle.Message {
ctor public Notification.MessagingStyle.Message(java.lang.CharSequence, long, java.lang.CharSequence);
- method public int describeContents();
method public java.lang.String getDataMimeType();
method public android.net.Uri getDataUri();
method public java.lang.CharSequence getSender();
method public java.lang.CharSequence getText();
method public long getTimestamp();
method public android.app.Notification.MessagingStyle.Message setData(java.lang.String, android.net.Uri);
- method public void writeToParcel(android.os.Parcel, int);
- field public static final android.os.Parcelable.Creator<android.app.Notification.MessagingStyle.Message> CREATOR;
}
public static abstract class Notification.Style {
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 1ad5a0275e1a..43c6ca58a16a 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -947,10 +947,10 @@ public class Notification implements Parcelable
public static final String EXTRA_ALLOW_GENERATED_REPLIES = "android.allowGeneratedReplies";
/**
- * {@link #extras} key: a {@link String} to be displayed as the title to a thread represented by
- * a {@link android.app.Notification.MessagingStyle}
+ * {@link #extras} key: a {@link String} to be displayed as the title to a conversation
+ * represented by a {@link android.app.Notification.MessagingStyle}
*/
- public static final String EXTRA_THREAD_TITLE = "android.threadTitle";
+ public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
/**
* {@link #extras} key: an array of {@link android.app.Notification.MessagingStyle.Message}
@@ -4326,7 +4326,7 @@ public class Notification implements Parcelable
CharSequence mUserDisplayName;
CharSequence mConversationTitle;
boolean mAllowGeneratedReplies = true;
- ArrayList<Message> mMessages = new ArrayList<>();
+ List<Message> mMessages = new ArrayList<>();
MessagingStyle() {
}
@@ -4439,11 +4439,11 @@ public class Notification implements Parcelable
extras.putCharSequence(EXTRA_SELF_DISPLAY_NAME, mUserDisplayName);
}
if (mConversationTitle != null) {
- extras.putCharSequence(EXTRA_THREAD_TITLE, mConversationTitle);
+ extras.putCharSequence(EXTRA_CONVERSATION_TITLE, mConversationTitle);
}
extras.putBoolean(EXTRA_ALLOW_GENERATED_REPLIES, mAllowGeneratedReplies);
- if (!mMessages.isEmpty()) {
- extras.putParcelableArrayList(EXTRA_MESSAGES, mMessages);
+ if (!mMessages.isEmpty()) { extras.putParcelableArray(EXTRA_MESSAGES,
+ Message.getBundleArrayForMessages(mMessages));
}
}
@@ -4456,12 +4456,12 @@ public class Notification implements Parcelable
mMessages.clear();
mUserDisplayName = extras.getString(EXTRA_SELF_DISPLAY_NAME);
- mConversationTitle = extras.getString(EXTRA_THREAD_TITLE);
+ mConversationTitle = extras.getString(EXTRA_CONVERSATION_TITLE);
mAllowGeneratedReplies = extras.getBoolean(EXTRA_ALLOW_GENERATED_REPLIES,
mAllowGeneratedReplies);
- List<Message> messages = extras.getParcelableArrayList(EXTRA_MESSAGES);
- if (messages != null) {
- mMessages.addAll(messages);
+ Parcelable[] parcelables = extras.getParcelableArray(EXTRA_MESSAGES);
+ if (parcelables != null && parcelables instanceof Bundle[]) {
+ mMessages = Message.getMessagesFromBundleArray((Bundle[]) parcelables);
}
}
@@ -4562,7 +4562,13 @@ public class Notification implements Parcelable
ColorStateList.valueOf(color), null);
}
- public static final class Message implements Parcelable {
+ public static final class Message {
+
+ static final String KEY_TEXT = "text";
+ static final String KEY_TIMESTAMP = "time";
+ static final String KEY_SENDER = "sender";
+ static final String KEY_DATA_MIME_TYPE = "type";
+ static final String KEY_DATA_URI= "uri";
private final CharSequence mText;
private final long mTimestamp;
@@ -4620,26 +4626,6 @@ public class Notification implements Parcelable
return this;
}
- private Message(Parcel in) {
- if (in.readInt() != 0) {
- mText = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
- } else {
- mText = null;
- }
- mTimestamp = in.readLong();
- if (in.readInt() != 0) {
- mSender = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
- } else {
- mSender = null;
- }
- if (in.readInt() != 0) {
- mDataMimeType = in.readString();
- }
- if (in.readInt() != 0) {
- mDataUri = in.readParcelable(Uri.class.getClassLoader());
- }
- }
-
/**
* Get the text to be used for this message, or the fallback text if a type and content
* Uri have been set
@@ -4677,49 +4663,64 @@ public class Notification implements Parcelable
return mDataUri;
}
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel out, int flags) {
+ private Bundle toBundle() {
+ Bundle bundle = new Bundle();
if (mText != null) {
- out.writeInt(1);
- TextUtils.writeToParcel(mText, out, flags);
- } else {
- out.writeInt(0);
+ bundle.putCharSequence(KEY_TEXT, mText);
}
- out.writeLong(mTimestamp);
+ bundle.putLong(KEY_TIMESTAMP, mTimestamp);
if (mSender != null) {
- out.writeInt(1);
- TextUtils.writeToParcel(mSender, out, flags);
- } else {
- out.writeInt(0);
+ bundle.putCharSequence(KEY_SENDER, mSender);
}
if (mDataMimeType != null) {
- out.writeInt(1);
- out.writeString(mDataMimeType);
- } else {
- out.writeInt(0);
+ bundle.putString(KEY_DATA_MIME_TYPE, mDataMimeType);
}
if (mDataUri != null) {
- out.writeInt(1);
- out.writeParcelable(mDataUri, flags);
- } else {
- out.writeInt(0);
+ bundle.putParcelable(KEY_DATA_URI, mDataUri);
}
+ return bundle;
}
- public static final Parcelable.Creator<Message> CREATOR =
- new Parcelable.Creator<Message>() {
- public Message createFromParcel(Parcel in) {
- return new Message(in);
- }
- public Message[] newArray(int size) {
- return new Message[size];
+ static Bundle[] getBundleArrayForMessages(List<Message> messages) {
+ Bundle[] bundles = new Bundle[messages.size()];
+ final int N = messages.size();
+ for (int i = 0; i < N; i++) {
+ bundles[i] = messages.get(i).toBundle();
+ }
+ return bundles;
+ }
+
+ static List<Message> getMessagesFromBundleArray(Bundle[] 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);
+ }
+ }
+ return messages;
+ }
+
+ static Message getMessageFromBundle(Bundle bundle) {
+ try {
+ if (!bundle.containsKey(KEY_TEXT) || !bundle.containsKey(KEY_TIMESTAMP) ||
+ !bundle.containsKey(KEY_SENDER)) {
+ return null;
+ } else {
+ Message message = new Message(bundle.getCharSequence(KEY_TEXT),
+ bundle.getLong(KEY_TIMESTAMP), bundle.getCharSequence(KEY_SENDER));
+ if (bundle.containsKey(KEY_DATA_MIME_TYPE) &&
+ bundle.containsKey(KEY_DATA_URI)) {
+
+ message.setData(bundle.getString(KEY_DATA_MIME_TYPE),
+ (Uri) bundle.getParcelable(KEY_DATA_URI));
}
- };
+ return message;
+ }
+ } catch (ClassCastException e) {
+ return null;
+ }
+ }
}
}