diff --git a/libraries/common/src/main/java/androidx/media3/common/util/Util.java b/libraries/common/src/main/java/androidx/media3/common/util/Util.java index 6734f41d0f..3da9718f5f 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/Util.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/Util.java @@ -47,6 +47,7 @@ import android.app.Service; import android.app.UiModeManager; import android.content.BroadcastReceiver; import android.content.ComponentName; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -419,7 +420,8 @@ public final class Util { } private static boolean isMediaStoreExternalContentUri(Uri uri) { - if (!"content".equals(uri.getScheme()) || !MediaStore.AUTHORITY.equals(uri.getAuthority())) { + if (!Objects.equals(uri.getScheme(), ContentResolver.SCHEME_CONTENT) + || !Objects.equals(uri.getAuthority(), MediaStore.AUTHORITY)) { return false; } List pathSegments = uri.getPathSegments(); @@ -467,7 +469,7 @@ public final class Util { @UnstableApi public static boolean isLocalFileUri(Uri uri) { String scheme = uri.getScheme(); - return TextUtils.isEmpty(scheme) || "file".equals(scheme); + return TextUtils.isEmpty(scheme) || Objects.equals(scheme, ContentResolver.SCHEME_FILE); } /** Returns true if the code path is currently running on an emulator. */ diff --git a/libraries/datasource/src/main/java/androidx/media3/datasource/ContentDataSource.java b/libraries/datasource/src/main/java/androidx/media3/datasource/ContentDataSource.java index a6ef7e82df..b486f21b49 100644 --- a/libraries/datasource/src/main/java/androidx/media3/datasource/ContentDataSource.java +++ b/libraries/datasource/src/main/java/androidx/media3/datasource/ContentDataSource.java @@ -32,6 +32,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.nio.channels.FileChannel; +import java.util.Objects; /** A {@link DataSource} for reading from a content URI. */ @UnstableApi @@ -81,7 +82,7 @@ public final class ContentDataSource extends BaseDataSource { transferInitializing(dataSpec); AssetFileDescriptor assetFileDescriptor; - if ("content".equals(uri.getScheme())) { + if (Objects.equals(uri.getScheme(), ContentResolver.SCHEME_CONTENT)) { Bundle providerOptions = new Bundle(); // We don't want compatible media transcoding. providerOptions.putBoolean(MediaStore.EXTRA_ACCEPT_ORIGINAL_MEDIA_FORMAT, true); diff --git a/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java b/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java index 6b3e982d4f..bc07f11e27 100644 --- a/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java +++ b/libraries/datasource/src/main/java/androidx/media3/datasource/DefaultDataSource.java @@ -122,7 +122,7 @@ public final class DefaultDataSource implements DataSource { private static final String TAG = "DefaultDataSource"; private static final String SCHEME_ASSET = "asset"; - private static final String SCHEME_CONTENT = "content"; + private static final String SCHEME_CONTENT = ContentResolver.SCHEME_CONTENT; private static final String SCHEME_RTMP = "rtmp"; private static final String SCHEME_UDP = "udp"; private static final String SCHEME_DATA = DataSchemeDataSource.SCHEME_DATA; diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java index 60f01e70df..1574f4c07c 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java @@ -46,6 +46,7 @@ import androidx.media3.common.util.Assertions; import androidx.media3.common.util.Log; import androidx.media3.common.util.MediaFormatUtil; import androidx.media3.common.util.UnstableApi; +import androidx.media3.common.util.Util; import androidx.media3.datasource.DataSource; import androidx.media3.datasource.DataSourceUtil; import androidx.media3.datasource.DataSpec; @@ -287,11 +288,8 @@ public final class MediaExtractorCompat { */ public void setDataSource(Context context, Uri uri, @Nullable Map headers) throws IOException { - String scheme = uri.getScheme(); - String path = uri.getPath(); - if ((scheme == null || scheme.equals("file")) && path != null) { - // If the URI scheme is null or file, treat it as a local file path - setDataSource(path); + if (Util.isLocalFileUri(uri)) { + setDataSource(checkNotNull(uri.getPath())); return; }