Stay organized with collections
Save and categorize content based on your preferences.
When you add an audio or video program to the Play Next row, you must include
the attributes in the following table in addition to the attributes for audio and
video programs. Each attribute is linked to the corresponding setter in
WatchNextProgram.Builder.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[],null,["# Watch Next attributes\n\nWhen you add an audio or video program to the **Play Next** row, you must include\nthe attributes in the following table in addition to the attributes for audio and\nvideo programs. Each attribute is linked to the corresponding setter in\n[`WatchNextProgram.Builder`](/reference/androidx/tvprovider/media/tv/WatchNextProgram.Builder).\n| **Note:** If you are integrating with the client-side [WatchNext API](/reference/androidx/tvprovider/media/tv/WatchNextProgram), you must populate and align the [Internal Provider ID](/reference/androidx/tvprovider/media/tv/WatchNextProgram.Builder#setInternalProviderId(java.lang.String)) with the internal ID you provide in the [Media Actions](https://developers.google.com/actions/media) feed. Doing so helps Android TV reconcile the asset more effectively and provides a high-confidence feature to users.\n\n\u003cbr /\u003e\n\n| Attribute | Notes |\n|--------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [Watch Next Type](/reference/androidx/tvprovider/media/tv/WatchNextProgram.Builder#setWatchNextType(int)) | One of: - [`WATCH_NEXT_TYPE_CONTINUE`](/reference/androidx/tvprovider/media/tv/TvContractCompat.WatchNextPrograms#WATCH_NEXT_TYPE_CONTINUE()) - [`WATCH_NEXT_TYPE_NEXT`](/reference/androidx/tvprovider/media/tv/TvContractCompat.WatchNextPrograms#WATCH_NEXT_TYPE_NEXT()) - [`WATCH_NEXT_TYPE_NEW`](/reference/androidx/tvprovider/media/tv/TvContractCompat.WatchNextPrograms#WATCH_NEXT_TYPE_NEW()) - [`WATCH_NEXT_TYPE_WATCHLIST`](/reference/androidx/tvprovider/media/tv/TvContractCompat.WatchNextPrograms#WATCH_NEXT_TYPE_WATCHLIST()) |\n| [Last Enagagement Time](/reference/androidx/tvprovider/media/tv/WatchNextProgram.Builder#setLastEngagementTimeUtcMillis(long)) | The time the user or app last engaged with the program. |\n| [Last Playback Position](/reference/androidx/tvprovider/media/tv/WatchNextProgram.Builder#setLastPlaybackPositionMillis(int)) | Only required for `WATCH_NEXT_TYPE_CONTINUE`. |\n| [Duration](/reference/androidx/tvprovider/media/tv/WatchNextProgram.Builder#setDurationMillis(int)) | Only required for `WATCH_NEXT_TYPE_CONTINUE`. |\n\n\u003cbr /\u003e"]]