am 19d6dae4: am cfaf2d54: am 8f895de9: am 86647987: Icon-related Notifications API changes:
* commit '19d6dae447860c332501f7284e97c2734f7a040e':
Icon-related Notifications API changes:
diff --git a/api/current.txt b/api/current.txt
index f4f91a7..4a7dc82 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -4772,9 +4772,9 @@
field public int flags;
field public android.app.PendingIntent fullScreenIntent;
field public android.widget.RemoteViews headsUpContentView;
- field public int icon;
+ field public deprecated int icon;
field public int iconLevel;
- field public android.graphics.Bitmap largeIcon;
+ field public deprecated android.graphics.Bitmap largeIcon;
field public int ledARGB;
field public int ledOffMS;
field public int ledOnMS;
@@ -4790,20 +4790,22 @@
}
public static class Notification.Action implements android.os.Parcelable {
- ctor public Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public deprecated Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
method public android.app.Notification.Action clone();
method public int describeContents();
method public android.os.Bundle getExtras();
+ method public android.graphics.drawable.Icon getIcon();
method public android.app.RemoteInput[] getRemoteInputs();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.Notification.Action> CREATOR;
field public android.app.PendingIntent actionIntent;
- field public int icon;
+ field public deprecated int icon;
field public java.lang.CharSequence title;
}
public static final class Notification.Action.Builder {
- ctor public Notification.Action.Builder(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public deprecated Notification.Action.Builder(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public Notification.Action.Builder(android.graphics.drawable.Icon, java.lang.CharSequence, android.app.PendingIntent);
ctor public Notification.Action.Builder(android.app.Notification.Action);
method public android.app.Notification.Action.Builder addExtras(android.os.Bundle);
method public android.app.Notification.Action.Builder addRemoteInput(android.app.RemoteInput);
@@ -4851,7 +4853,7 @@
public static class Notification.Builder {
ctor public Notification.Builder(android.content.Context);
- method public android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
+ method public deprecated android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
method public android.app.Notification.Builder addAction(android.app.Notification.Action);
method public android.app.Notification.Builder addExtras(android.os.Bundle);
method public android.app.Notification.Builder addPerson(java.lang.String);
diff --git a/api/system-current.txt b/api/system-current.txt
index 4da118a..e83f8c6 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -4890,9 +4890,9 @@
field public int flags;
field public android.app.PendingIntent fullScreenIntent;
field public android.widget.RemoteViews headsUpContentView;
- field public int icon;
+ field public deprecated int icon;
field public int iconLevel;
- field public android.graphics.Bitmap largeIcon;
+ field public deprecated android.graphics.Bitmap largeIcon;
field public int ledARGB;
field public int ledOffMS;
field public int ledOnMS;
@@ -4908,20 +4908,22 @@
}
public static class Notification.Action implements android.os.Parcelable {
- ctor public Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public deprecated Notification.Action(int, java.lang.CharSequence, android.app.PendingIntent);
method public android.app.Notification.Action clone();
method public int describeContents();
method public android.os.Bundle getExtras();
+ method public android.graphics.drawable.Icon getIcon();
method public android.app.RemoteInput[] getRemoteInputs();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.app.Notification.Action> CREATOR;
field public android.app.PendingIntent actionIntent;
- field public int icon;
+ field public deprecated int icon;
field public java.lang.CharSequence title;
}
public static final class Notification.Action.Builder {
- ctor public Notification.Action.Builder(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public deprecated Notification.Action.Builder(int, java.lang.CharSequence, android.app.PendingIntent);
+ ctor public Notification.Action.Builder(android.graphics.drawable.Icon, java.lang.CharSequence, android.app.PendingIntent);
ctor public Notification.Action.Builder(android.app.Notification.Action);
method public android.app.Notification.Action.Builder addExtras(android.os.Bundle);
method public android.app.Notification.Action.Builder addRemoteInput(android.app.RemoteInput);
@@ -4969,7 +4971,7 @@
public static class Notification.Builder {
ctor public Notification.Builder(android.content.Context);
- method public android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
+ method public deprecated android.app.Notification.Builder addAction(int, java.lang.CharSequence, android.app.PendingIntent);
method public android.app.Notification.Builder addAction(android.app.Notification.Action);
method public android.app.Notification.Builder addExtras(android.os.Bundle);
method public android.app.Notification.Builder addPerson(java.lang.String);
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index c3dece8..4f73170 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -166,8 +166,10 @@
/**
* The resource id of a drawable to use as the icon in the status bar.
- * This is required; notifications with an invalid icon resource will not be shown.
+ *
+ * @deprecated Use {@link Builder#setSmallIcon(Icon)} instead.
*/
+ @Deprecated
@DrawableRes
public int icon;
@@ -269,8 +271,11 @@
public RemoteViews headsUpContentView;
/**
- * The bitmap that may escape the bounds of the panel and bar.
+ * A large bitmap to be shown in the notification content area.
+ *
+ * @deprecated Use {@link Builder#setLargeIcon(Icon)} instead.
*/
+ @Deprecated
public Bitmap largeIcon;
/**
@@ -900,11 +905,15 @@
*/
public static class Action implements Parcelable {
private final Bundle mExtras;
+ private Icon mIcon;
private final RemoteInput[] mRemoteInputs;
/**
* Small icon representing the action.
+ *
+ * @deprecated Use {@link Action#getIcon()} instead.
*/
+ @Deprecated
public int icon;
/**
@@ -919,7 +928,12 @@
public PendingIntent actionIntent;
private Action(Parcel in) {
- icon = in.readInt();
+ if (in.readInt() != 0) {
+ mIcon = Icon.CREATOR.createFromParcel(in);
+ }
+ if (mIcon.getType() == Icon.TYPE_RESOURCE) {
+ icon = mIcon.getResId();
+ }
title = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
if (in.readInt() == 1) {
actionIntent = PendingIntent.CREATOR.createFromParcel(in);
@@ -929,15 +943,16 @@
}
/**
- * Use {@link Notification.Builder#addAction(int, CharSequence, PendingIntent)}.
+ * @deprecated Use {@link android.app.Notification.Action.Builder}.
*/
+ @Deprecated
public Action(int icon, CharSequence title, PendingIntent intent) {
- this(icon, title, intent, new Bundle(), null);
+ this(Icon.createWithResource("", icon), title, intent, new Bundle(), null);
}
- private Action(int icon, CharSequence title, PendingIntent intent, Bundle extras,
+ private Action(Icon icon, CharSequence title, PendingIntent intent, Bundle extras,
RemoteInput[] remoteInputs) {
- this.icon = icon;
+ this.mIcon = icon;
this.title = title;
this.actionIntent = intent;
this.mExtras = extras != null ? extras : new Bundle();
@@ -945,6 +960,17 @@
}
/**
+ * Return an icon representing the action.
+ */
+ public Icon getIcon() {
+ if (mIcon == null && icon != 0) {
+ // you snuck an icon in here without using the builder; let's try to keep it
+ mIcon = Icon.createWithResource("", icon);
+ }
+ return mIcon;
+ }
+
+ /**
* Get additional metadata carried around with this Action.
*/
public Bundle getExtras() {
@@ -963,7 +989,7 @@
* Builder class for {@link Action} objects.
*/
public static final class Builder {
- private final int mIcon;
+ private final Icon mIcon;
private final CharSequence mTitle;
private final PendingIntent mIntent;
private final Bundle mExtras;
@@ -975,7 +1001,18 @@
* @param title the title of the action
* @param intent the {@link PendingIntent} to fire when users trigger this action
*/
+ @Deprecated
public Builder(int icon, CharSequence title, PendingIntent intent) {
+ this(Icon.createWithResource("", icon), title, intent, new Bundle(), null);
+ }
+
+ /**
+ * Construct a new builder for {@link Action} object.
+ * @param icon icon to show for this action
+ * @param title the title of the action
+ * @param intent the {@link PendingIntent} to fire when users trigger this action
+ */
+ public Builder(Icon icon, CharSequence title, PendingIntent intent) {
this(icon, title, intent, new Bundle(), null);
}
@@ -985,11 +1022,11 @@
* @param action the action to read fields from.
*/
public Builder(Action action) {
- this(action.icon, action.title, action.actionIntent, new Bundle(action.mExtras),
+ this(action.getIcon(), action.title, action.actionIntent, new Bundle(action.mExtras),
action.getRemoteInputs());
}
- private Builder(int icon, CharSequence title, PendingIntent intent, Bundle extras,
+ private Builder(Icon icon, CharSequence title, PendingIntent intent, Bundle extras,
RemoteInput[] remoteInputs) {
mIcon = icon;
mTitle = title;
@@ -1063,7 +1100,7 @@
@Override
public Action clone() {
return new Action(
- icon,
+ getIcon(),
title,
actionIntent, // safe to alias
new Bundle(mExtras),
@@ -1075,7 +1112,13 @@
}
@Override
public void writeToParcel(Parcel out, int flags) {
- out.writeInt(icon);
+ final Icon ic = getIcon();
+ if (ic != null) {
+ out.writeInt(1);
+ ic.writeToParcel(out, 0);
+ } else {
+ out.writeInt(0);
+ }
TextUtils.writeToParcel(title, out, flags);
if (actionIntent != null) {
out.writeInt(1);
@@ -2725,7 +2768,10 @@
* @param icon Resource ID of a drawable that represents the action.
* @param title Text describing the action.
* @param intent PendingIntent to be fired when the action is invoked.
+ *
+ * @deprecated Use {@link #addAction(Action)} instead.
*/
+ @Deprecated
public Builder addAction(int icon, CharSequence title, PendingIntent intent) {
mActions.add(new Action(icon, safeCharSequence(title), intent));
return this;
@@ -4265,7 +4311,7 @@
*
* In the expanded form, {@link Notification#bigContentView}, up to 5
* {@link Notification.Action}s specified with
- * {@link Notification.Builder#addAction(int, CharSequence, PendingIntent) addAction} will be
+ * {@link Notification.Builder#addAction(Action) addAction} will be
* shown as icon-only pushbuttons, suitable for transport controls. The Bitmap given to
* {@link Notification.Builder#setLargeIcon(android.graphics.Bitmap) setLargeIcon()} will be
* treated as album artwork.