From bffa3e0afbea15e51a0be9afc85a9e84562716e2 Mon Sep 17 00:00:00 2001 From: olly Date: Tue, 3 Aug 2021 10:36:57 +0100 Subject: [PATCH] ContentDataSource: Restore ability to open file URIs PiperOrigin-RevId: 388410558 --- .../upstream/ContentDataSource.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/ContentDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/ContentDataSource.java index b18ec6647f..3b5ec65788 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/ContentDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/ContentDataSource.java @@ -79,16 +79,22 @@ public final class ContentDataSource extends BaseDataSource { transferInitializing(dataSpec); - Bundle providerOptions = new Bundle(); - if (Util.SDK_INT >= 31) { - Api31.disableTranscoding(providerOptions); + AssetFileDescriptor assetFileDescriptor; + if ("content".equals(dataSpec.uri.getScheme())) { + Bundle providerOptions = new Bundle(); + if (Util.SDK_INT >= 31) { + Api31.disableTranscoding(providerOptions); + } + assetFileDescriptor = + resolver.openTypedAssetFileDescriptor(uri, /* mimeType= */ "*/*", providerOptions); + } else { + // This path supports file URIs, although support may be removed in the future. See + // [Internal ref: b/195384732]. + assetFileDescriptor = resolver.openAssetFileDescriptor(uri, "r"); } - - AssetFileDescriptor assetFileDescriptor = - resolver.openTypedAssetFileDescriptor(uri, /* mimeType= */ "*/*", providerOptions); this.assetFileDescriptor = assetFileDescriptor; if (assetFileDescriptor == null) { - // openTypedAssetFileDescriptor returns null if the provider recently crashed. + // assetFileDescriptor may be null if the provider recently crashed. throw new ContentDataSourceException( new IOException("Could not open file descriptor for: " + uri), PlaybackException.ERROR_CODE_IO_UNSPECIFIED);