Loading api/system-current.txt +11 −0 Original line number Diff line number Diff line Loading @@ -5484,6 +5484,17 @@ package android.app { field protected android.app.Notification.Builder mBuilder; } public static final class Notification.TvExtender implements android.app.Notification.Extender { ctor public Notification.TvExtender(); ctor public Notification.TvExtender(android.app.Notification); method public android.app.Notification.Builder extend(android.app.Notification.Builder); method public android.app.PendingIntent getContentIntent(); method public android.app.PendingIntent getDeleteIntent(); method public boolean isAvailableOnTv(); method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent); method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent); } public static final class Notification.WearableExtender implements android.app.Notification.Extender { ctor public Notification.WearableExtender(); ctor public Notification.WearableExtender(android.app.Notification); core/java/android/app/Notification.java +137 −1 Original line number Diff line number Diff line Loading @@ -6974,6 +6974,142 @@ public class Notification implements Parcelable } } /** * <p>Helper class to add Android TV extensions to notifications. To create a notification * with a TV extension: * * <ol> * <li>Create an {@link Notification.Builder}, setting any desired properties. * <li>Create a {@link TvExtender}. * <li>Set TV-specific properties using the {@code set} methods of * {@link TvExtender}. * <li>Call {@link Notification.Builder#extend(Notification.Extender)} * to apply the extension to a notification. * </ol> * * <pre class="prettyprint"> * Notification notification = new Notification.Builder(context) * ... * .extend(new TvExtender() * .set*(...)) * .build(); * </pre> * * <p>TV extensions can be accessed on an existing notification by using the * {@code TvExtender(Notification)} constructor, and then using the {@code get} methods * to access values. * * @hide */ @SystemApi public static final class TvExtender implements Extender { private static final String TAG = "TvExtender"; private static final String EXTRA_TV_EXTENDER = "android.tv.EXTENSIONS"; 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"; // Flags bitwise-ored to mFlags private static final int FLAG_AVAILABLE_ON_TV = 0x1; private int mFlags; private PendingIntent mContentIntent; private PendingIntent mDeleteIntent; /** * Create a {@link TvExtender} with default options. */ public TvExtender() { mFlags = FLAG_AVAILABLE_ON_TV; } /** * Create a {@link TvExtender} from the TvExtender options of an existing Notification. * * @param notif The notification from which to copy options. */ public TvExtender(Notification notif) { Bundle bundle = notif.extras == null ? null : notif.extras.getBundle(EXTRA_TV_EXTENDER); if (bundle != null) { mFlags = bundle.getInt(EXTRA_FLAGS); mContentIntent = bundle.getParcelable(EXTRA_CONTENT_INTENT); mDeleteIntent = bundle.getParcelable(EXTRA_DELETE_INTENT); } } /** * Apply a TV extension to a notification that is being built. This is typically called by * the {@link Notification.Builder#extend(Notification.Extender)} * method of {@link Notification.Builder}. */ @Override public Notification.Builder extend(Notification.Builder builder) { Bundle bundle = new Bundle(); bundle.putInt(EXTRA_FLAGS, mFlags); if (mContentIntent != null) { bundle.putParcelable(EXTRA_CONTENT_INTENT, mContentIntent); } if (mDeleteIntent != null) { bundle.putParcelable(EXTRA_DELETE_INTENT, mDeleteIntent); } builder.getExtras().putBundle(EXTRA_TV_EXTENDER, bundle); return builder; } /** * Returns true if this notification should be shown on TV. This method return true * if the notification was extended with a TvExtender. */ public boolean isAvailableOnTv() { return (mFlags & FLAG_AVAILABLE_ON_TV) != 0; } /** * 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 * at the level of Notification. */ public TvExtender setContentIntent(PendingIntent intent) { mContentIntent = intent; return this; } /** * Returns the TV-specific content intent. If this method returns null, the * main content intent on the notification should be used. * * @see {@link Notification#contentIntent} */ public PendingIntent getContentIntent() { return mContentIntent; } /** * Supplies a {@link PendingIntent} to send when the notification is cleared explicitly * by the user on TV. If provided, it is used instead of the delete intent specified * at the level of Notification. */ public TvExtender setDeleteIntent(PendingIntent intent) { mDeleteIntent = intent; return this; } /** * Returns the TV-specific delete intent. If this method returns null, the * main delete intent on the notification should be used. * * @see {@link Notification#deleteIntent} */ public PendingIntent getDeleteIntent() { return mDeleteIntent; } } /** * Get an array of Notification objects from a parcelable array bundle field. * Update the bundle to have a typed array so fetches in the future don't need Loading Loading
api/system-current.txt +11 −0 Original line number Diff line number Diff line Loading @@ -5484,6 +5484,17 @@ package android.app { field protected android.app.Notification.Builder mBuilder; } public static final class Notification.TvExtender implements android.app.Notification.Extender { ctor public Notification.TvExtender(); ctor public Notification.TvExtender(android.app.Notification); method public android.app.Notification.Builder extend(android.app.Notification.Builder); method public android.app.PendingIntent getContentIntent(); method public android.app.PendingIntent getDeleteIntent(); method public boolean isAvailableOnTv(); method public android.app.Notification.TvExtender setContentIntent(android.app.PendingIntent); method public android.app.Notification.TvExtender setDeleteIntent(android.app.PendingIntent); } public static final class Notification.WearableExtender implements android.app.Notification.Extender { ctor public Notification.WearableExtender(); ctor public Notification.WearableExtender(android.app.Notification);
core/java/android/app/Notification.java +137 −1 Original line number Diff line number Diff line Loading @@ -6974,6 +6974,142 @@ public class Notification implements Parcelable } } /** * <p>Helper class to add Android TV extensions to notifications. To create a notification * with a TV extension: * * <ol> * <li>Create an {@link Notification.Builder}, setting any desired properties. * <li>Create a {@link TvExtender}. * <li>Set TV-specific properties using the {@code set} methods of * {@link TvExtender}. * <li>Call {@link Notification.Builder#extend(Notification.Extender)} * to apply the extension to a notification. * </ol> * * <pre class="prettyprint"> * Notification notification = new Notification.Builder(context) * ... * .extend(new TvExtender() * .set*(...)) * .build(); * </pre> * * <p>TV extensions can be accessed on an existing notification by using the * {@code TvExtender(Notification)} constructor, and then using the {@code get} methods * to access values. * * @hide */ @SystemApi public static final class TvExtender implements Extender { private static final String TAG = "TvExtender"; private static final String EXTRA_TV_EXTENDER = "android.tv.EXTENSIONS"; 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"; // Flags bitwise-ored to mFlags private static final int FLAG_AVAILABLE_ON_TV = 0x1; private int mFlags; private PendingIntent mContentIntent; private PendingIntent mDeleteIntent; /** * Create a {@link TvExtender} with default options. */ public TvExtender() { mFlags = FLAG_AVAILABLE_ON_TV; } /** * Create a {@link TvExtender} from the TvExtender options of an existing Notification. * * @param notif The notification from which to copy options. */ public TvExtender(Notification notif) { Bundle bundle = notif.extras == null ? null : notif.extras.getBundle(EXTRA_TV_EXTENDER); if (bundle != null) { mFlags = bundle.getInt(EXTRA_FLAGS); mContentIntent = bundle.getParcelable(EXTRA_CONTENT_INTENT); mDeleteIntent = bundle.getParcelable(EXTRA_DELETE_INTENT); } } /** * Apply a TV extension to a notification that is being built. This is typically called by * the {@link Notification.Builder#extend(Notification.Extender)} * method of {@link Notification.Builder}. */ @Override public Notification.Builder extend(Notification.Builder builder) { Bundle bundle = new Bundle(); bundle.putInt(EXTRA_FLAGS, mFlags); if (mContentIntent != null) { bundle.putParcelable(EXTRA_CONTENT_INTENT, mContentIntent); } if (mDeleteIntent != null) { bundle.putParcelable(EXTRA_DELETE_INTENT, mDeleteIntent); } builder.getExtras().putBundle(EXTRA_TV_EXTENDER, bundle); return builder; } /** * Returns true if this notification should be shown on TV. This method return true * if the notification was extended with a TvExtender. */ public boolean isAvailableOnTv() { return (mFlags & FLAG_AVAILABLE_ON_TV) != 0; } /** * 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 * at the level of Notification. */ public TvExtender setContentIntent(PendingIntent intent) { mContentIntent = intent; return this; } /** * Returns the TV-specific content intent. If this method returns null, the * main content intent on the notification should be used. * * @see {@link Notification#contentIntent} */ public PendingIntent getContentIntent() { return mContentIntent; } /** * Supplies a {@link PendingIntent} to send when the notification is cleared explicitly * by the user on TV. If provided, it is used instead of the delete intent specified * at the level of Notification. */ public TvExtender setDeleteIntent(PendingIntent intent) { mDeleteIntent = intent; return this; } /** * Returns the TV-specific delete intent. If this method returns null, the * main delete intent on the notification should be used. * * @see {@link Notification#deleteIntent} */ public PendingIntent getDeleteIntent() { return mDeleteIntent; } } /** * Get an array of Notification objects from a parcelable array bundle field. * Update the bundle to have a typed array so fetches in the future don't need Loading