Adding no-op in PreviewChannel classes for API<26
Bug: 136123939
Test: Ran a sample TV App with Emulator having API version=24 and
invoked all the public methods of PreviewChannelHelper class and
verified the desired no-op behavior.
./gradlew buildOnServer : Successful
Change-Id: If165ec032cf528af7e801b64b50ade6cec4274b7
diff --git a/tv-provider/tv-provider/api/1.1.0-alpha01.txt b/tv-provider/tv-provider/api/1.1.0-alpha01.txt
index f191bd7..20e0c4b 100644
--- a/tv-provider/tv-provider/api/1.1.0-alpha01.txt
+++ b/tv-provider/tv-provider/api/1.1.0-alpha01.txt
@@ -123,9 +123,9 @@
method public void deletePreviewProgram(long);
method protected android.graphics.Bitmap! downloadBitmap(android.net.Uri) throws java.io.IOException;
method public java.util.List<androidx.tvprovider.media.tv.PreviewChannel!>! getAllChannels();
- method public androidx.tvprovider.media.tv.PreviewChannel! getPreviewChannel(long);
- method public androidx.tvprovider.media.tv.PreviewProgram! getPreviewProgram(long);
- method public androidx.tvprovider.media.tv.WatchNextProgram! getWatchNextProgram(long);
+ method public androidx.tvprovider.media.tv.PreviewChannel? getPreviewChannel(long);
+ method public androidx.tvprovider.media.tv.PreviewProgram? getPreviewProgram(long);
+ method public androidx.tvprovider.media.tv.WatchNextProgram? getWatchNextProgram(long);
method public long publishChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishDefaultChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishPreviewProgram(androidx.tvprovider.media.tv.PreviewProgram);
diff --git a/tv-provider/tv-provider/api/current.txt b/tv-provider/tv-provider/api/current.txt
index f191bd7..20e0c4b 100644
--- a/tv-provider/tv-provider/api/current.txt
+++ b/tv-provider/tv-provider/api/current.txt
@@ -123,9 +123,9 @@
method public void deletePreviewProgram(long);
method protected android.graphics.Bitmap! downloadBitmap(android.net.Uri) throws java.io.IOException;
method public java.util.List<androidx.tvprovider.media.tv.PreviewChannel!>! getAllChannels();
- method public androidx.tvprovider.media.tv.PreviewChannel! getPreviewChannel(long);
- method public androidx.tvprovider.media.tv.PreviewProgram! getPreviewProgram(long);
- method public androidx.tvprovider.media.tv.WatchNextProgram! getWatchNextProgram(long);
+ method public androidx.tvprovider.media.tv.PreviewChannel? getPreviewChannel(long);
+ method public androidx.tvprovider.media.tv.PreviewProgram? getPreviewProgram(long);
+ method public androidx.tvprovider.media.tv.WatchNextProgram? getWatchNextProgram(long);
method public long publishChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishDefaultChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishPreviewProgram(androidx.tvprovider.media.tv.PreviewProgram);
diff --git a/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt b/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt
index f191bd7..20e0c4b 100644
--- a/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt
+++ b/tv-provider/tv-provider/api/public_plus_experimental_1.1.0-alpha01.txt
@@ -123,9 +123,9 @@
method public void deletePreviewProgram(long);
method protected android.graphics.Bitmap! downloadBitmap(android.net.Uri) throws java.io.IOException;
method public java.util.List<androidx.tvprovider.media.tv.PreviewChannel!>! getAllChannels();
- method public androidx.tvprovider.media.tv.PreviewChannel! getPreviewChannel(long);
- method public androidx.tvprovider.media.tv.PreviewProgram! getPreviewProgram(long);
- method public androidx.tvprovider.media.tv.WatchNextProgram! getWatchNextProgram(long);
+ method public androidx.tvprovider.media.tv.PreviewChannel? getPreviewChannel(long);
+ method public androidx.tvprovider.media.tv.PreviewProgram? getPreviewProgram(long);
+ method public androidx.tvprovider.media.tv.WatchNextProgram? getWatchNextProgram(long);
method public long publishChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishDefaultChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishPreviewProgram(androidx.tvprovider.media.tv.PreviewProgram);
diff --git a/tv-provider/tv-provider/api/public_plus_experimental_current.txt b/tv-provider/tv-provider/api/public_plus_experimental_current.txt
index f191bd7..20e0c4b 100644
--- a/tv-provider/tv-provider/api/public_plus_experimental_current.txt
+++ b/tv-provider/tv-provider/api/public_plus_experimental_current.txt
@@ -123,9 +123,9 @@
method public void deletePreviewProgram(long);
method protected android.graphics.Bitmap! downloadBitmap(android.net.Uri) throws java.io.IOException;
method public java.util.List<androidx.tvprovider.media.tv.PreviewChannel!>! getAllChannels();
- method public androidx.tvprovider.media.tv.PreviewChannel! getPreviewChannel(long);
- method public androidx.tvprovider.media.tv.PreviewProgram! getPreviewProgram(long);
- method public androidx.tvprovider.media.tv.WatchNextProgram! getWatchNextProgram(long);
+ method public androidx.tvprovider.media.tv.PreviewChannel? getPreviewChannel(long);
+ method public androidx.tvprovider.media.tv.PreviewProgram? getPreviewProgram(long);
+ method public androidx.tvprovider.media.tv.WatchNextProgram? getWatchNextProgram(long);
method public long publishChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishDefaultChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishPreviewProgram(androidx.tvprovider.media.tv.PreviewProgram);
diff --git a/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt b/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt
index 3e2e7d7..9349521 100644
--- a/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt
+++ b/tv-provider/tv-provider/api/restricted_1.1.0-alpha01.txt
@@ -150,9 +150,9 @@
method public void deletePreviewProgram(long);
method protected android.graphics.Bitmap! downloadBitmap(android.net.Uri) throws java.io.IOException;
method public java.util.List<androidx.tvprovider.media.tv.PreviewChannel!>! getAllChannels();
- method public androidx.tvprovider.media.tv.PreviewChannel! getPreviewChannel(long);
- method public androidx.tvprovider.media.tv.PreviewProgram! getPreviewProgram(long);
- method public androidx.tvprovider.media.tv.WatchNextProgram! getWatchNextProgram(long);
+ method public androidx.tvprovider.media.tv.PreviewChannel? getPreviewChannel(long);
+ method public androidx.tvprovider.media.tv.PreviewProgram? getPreviewProgram(long);
+ method public androidx.tvprovider.media.tv.WatchNextProgram? getWatchNextProgram(long);
method public long publishChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishDefaultChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishPreviewProgram(androidx.tvprovider.media.tv.PreviewProgram);
diff --git a/tv-provider/tv-provider/api/restricted_current.txt b/tv-provider/tv-provider/api/restricted_current.txt
index 3e2e7d7..9349521 100644
--- a/tv-provider/tv-provider/api/restricted_current.txt
+++ b/tv-provider/tv-provider/api/restricted_current.txt
@@ -150,9 +150,9 @@
method public void deletePreviewProgram(long);
method protected android.graphics.Bitmap! downloadBitmap(android.net.Uri) throws java.io.IOException;
method public java.util.List<androidx.tvprovider.media.tv.PreviewChannel!>! getAllChannels();
- method public androidx.tvprovider.media.tv.PreviewChannel! getPreviewChannel(long);
- method public androidx.tvprovider.media.tv.PreviewProgram! getPreviewProgram(long);
- method public androidx.tvprovider.media.tv.WatchNextProgram! getWatchNextProgram(long);
+ method public androidx.tvprovider.media.tv.PreviewChannel? getPreviewChannel(long);
+ method public androidx.tvprovider.media.tv.PreviewProgram? getPreviewProgram(long);
+ method public androidx.tvprovider.media.tv.WatchNextProgram? getWatchNextProgram(long);
method public long publishChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishDefaultChannel(androidx.tvprovider.media.tv.PreviewChannel) throws java.io.IOException;
method public long publishPreviewProgram(androidx.tvprovider.media.tv.PreviewProgram);
diff --git a/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannelHelper.java b/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannelHelper.java
index 40b0bf8..540ec01 100644
--- a/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannelHelper.java
+++ b/tv-provider/tv-provider/src/main/java/androidx/tvprovider/media/tv/PreviewChannelHelper.java
@@ -26,10 +26,12 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
+import android.os.Build;
import android.text.format.DateUtils;
import android.util.Log;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.annotation.WorkerThread;
@@ -40,6 +42,7 @@
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
/**
@@ -122,6 +125,11 @@
* published channel. You can use it later to get a reference to this published PreviewChannel.
*/
public long publishChannel(@NonNull PreviewChannel channel) throws IOException {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return INVALID_CONTENT_ID;
+ }
+
try {
Uri channelUri = mContext.getContentResolver().insert(
TvContractCompat.Channels.CONTENT_URI,
@@ -164,8 +172,12 @@
* @return channelId: This is the id the system assigns to your published channel. You can
* use it later to get a reference to this published PreviewChannel.
*/
- public long publishDefaultChannel(@NonNull PreviewChannel channel)
- throws IOException {
+ public long publishDefaultChannel(@NonNull PreviewChannel channel) throws IOException {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return INVALID_CONTENT_ID;
+ }
+
long channelId = publishChannel(channel);
TvContractCompat.requestChannelBrowsable(mContext, channelId);
return channelId;
@@ -177,6 +189,11 @@
* your channels at once and then use the returned list as necessary.
*/
public List<PreviewChannel> getAllChannels() {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return Collections.emptyList();
+ }
+
Cursor cursor = mContext.getContentResolver()
.query(
TvContractCompat.Channels.CONTENT_URI,
@@ -201,7 +218,13 @@
* @param channelId ID of preview channel in TvProvider
* @return PreviewChannel or null if not found
*/
+ @Nullable
public PreviewChannel getPreviewChannel(long channelId) {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return null;
+ }
+
PreviewChannel channel = null;
Uri channelUri = TvContractCompat.buildChannelUri(channelId);
Cursor cursor = mContext.getContentResolver()
@@ -363,6 +386,11 @@
* Adds programs to a preview channel.
*/
public long publishPreviewProgram(@NonNull PreviewProgram program) {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return INVALID_CONTENT_ID;
+ }
+
try {
Uri programUri = mContext.getContentResolver().insert(
TvContractCompat.PreviewPrograms.CONTENT_URI,
@@ -379,7 +407,13 @@
/**
* Retrieves a single preview program from the system content provider (aka TvProvider).
*/
+ @Nullable
public PreviewProgram getPreviewProgram(long programId) {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return null;
+ }
+
PreviewProgram program = null;
Uri programUri = TvContractCompat.buildPreviewProgramUri(programId);
Cursor cursor = mContext.getContentResolver().query(programUri, null, null, null, null);
@@ -418,6 +452,11 @@
* Removes programs from a preview channel.
*/
public void deletePreviewProgram(long programId) {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return;
+ }
+
mContext.getContentResolver().delete(
TvContractCompat.buildPreviewProgramUri(programId), null, null);
}
@@ -426,6 +465,11 @@
* Adds a program to the Watch Next channel
*/
public long publishWatchNextProgram(@NonNull WatchNextProgram program) {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return INVALID_CONTENT_ID;
+ }
+
try {
Uri programUri = mContext.getContentResolver().insert(
TvContractCompat.WatchNextPrograms.CONTENT_URI, program.toContentValues());
@@ -440,7 +484,13 @@
/**
* Retrieves a single WatchNext program from the system content provider (aka TvProvider).
*/
+ @Nullable
public WatchNextProgram getWatchNextProgram(long programId) {
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+ return null;
+ }
+
WatchNextProgram program = null;
Uri programUri = TvContractCompat.buildWatchNextProgramUri(programId);
Cursor cursor = mContext.getContentResolver().query(programUri, null, null, null, null);