diff --git a/api/system-current.txt b/api/system-current.txt index ab064390255e1..a178d2a8f83f0 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5482,9 +5482,11 @@ package android.app { ctor public Notification.TvExtender(); ctor public Notification.TvExtender(android.app.Notification); method public android.app.Notification.Builder extend(android.app.Notification.Builder); + method public java.lang.String getChannel(); method public android.app.PendingIntent getContentIntent(); method public android.app.PendingIntent getDeleteIntent(); method public boolean isAvailableOnTv(); + method public android.app.Notification.TvExtender setChannel(java.lang.String); method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent); method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent); } diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 69f4cc0bdc9d4..6033bfa493a2c 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -6982,11 +6982,13 @@ public class Notification implements Parcelable private static final String EXTRA_FLAGS = "flags"; private static final String EXTRA_CONTENT_INTENT = "content_intent"; private static final String EXTRA_DELETE_INTENT = "delete_intent"; + private static final String EXTRA_CHANNEL_ID = "channel_id"; // Flags bitwise-ored to mFlags private static final int FLAG_AVAILABLE_ON_TV = 0x1; private int mFlags; + private String mChannelId; private PendingIntent mContentIntent; private PendingIntent mDeleteIntent; @@ -7007,6 +7009,7 @@ public class Notification implements Parcelable null : notif.extras.getBundle(EXTRA_TV_EXTENDER); if (bundle != null) { mFlags = bundle.getInt(EXTRA_FLAGS); + mChannelId = bundle.getString(EXTRA_CHANNEL_ID); mContentIntent = bundle.getParcelable(EXTRA_CONTENT_INTENT); mDeleteIntent = bundle.getParcelable(EXTRA_DELETE_INTENT); } @@ -7022,6 +7025,7 @@ public class Notification implements Parcelable Bundle bundle = new Bundle(); bundle.putInt(EXTRA_FLAGS, mFlags); + bundle.putString(EXTRA_CHANNEL_ID, mChannelId); if (mContentIntent != null) { bundle.putParcelable(EXTRA_CONTENT_INTENT, mContentIntent); } @@ -7042,6 +7046,23 @@ public class Notification implements Parcelable return (mFlags & FLAG_AVAILABLE_ON_TV) != 0; } + /** + * Specifies the channel the notification should be delivered on when shown on TV. + * It can be different from the channel that the notification is delivered to when + * posting on a non-TV device. + */ + public TvExtender setChannel(String channelId) { + mChannelId = channelId; + return this; + } + + /** + * Returns the id of the channel this notification posts to on TV. + */ + public String getChannel() { + return mChannelId; + } + /** * Supplies a {@link PendingIntent} to be sent when the notification is selected on TV. * If provided, it is used instead of the content intent specified