Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8a04eee authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Adding TvExtender channel override

The rationale is that the notification importance on TV doesn't
always align with their importance on other devices.
Thus we need the ability to post notification to different
channels just on TV.

Test: ag/1808384
Change-Id: I90a84e3f74d59ca45dac3c6414285bed26482008
parent 9e9cfd93
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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);
  }
+21 −0
Original line number Diff line number Diff line
@@ -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