Remove some hard-coding of file and content URI schemes

PiperOrigin-RevId: 751417429
This commit is contained in:
ibaker 2025-04-25 08:03:13 -07:00 committed by Copybara-Service
parent fe59718805
commit 8bf658cd79
4 changed files with 10 additions and 9 deletions

View File

@ -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<String> 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. */

View File

@ -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);

View File

@ -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;

View File

@ -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<String, String> 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;
}