android uri mime-types

android - ¿Cómo puedo obtener el tipo de mimo de un archivo con su Uri?



mime-types (4)

Tengo una Lista de Uris obtenida con la Galería y la Cámara. Estos Uris son así: content://media/external/images/media/94 . ¿Cómo puedo obtener su tipo de mimo?


En lugar de esto:

String type = mime.getExtensionFromMimeType(cR.getType(uri));

Hacer esto:

String type = cR.getType(uri);

Y obtendrás esto: image/jpeg .


Este método devuelve la extensión del archivo (jpg, png, pdf, epub, etc.).

public static String getMimeType(Context context, Uri uri) { String extension; //Check uri format to avoid null if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) { //If scheme is a content final MimeTypeMap mime = MimeTypeMap.getSingleton(); extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uri)); } else { //If scheme is a File //This will replace white spaces with %20 and also other special characters. This will avoid returning null values on file name with spaces and special characters. extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uri.getPath())).toString()); } return extension; }


Puedes probar

ContentResolver cR = context.getContentResolver(); MimeTypeMap mime = MimeTypeMap.getSingleton(); String type = mime.getExtensionFromMimeType(cR.getType(uri));

Editar:

mime.getExtensionFromMimeType(cR.getType(uri))

regresa -> "jpeg"

cR.getType(uri);

devuelve "image / jpeg" que es el valor esperado.


para Content Uri .

ContentResolver cr = context.getContentResolver(); mimeType = cr.getType(contentUri);

para el File Uri .

String fileExtension = MimeTypeMap.getFileExtensionFromUrl(fileUri .toString()); mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension( fileExtension.toLowerCase());

para Both, funciona para Content y File .

public String getMimeType(Context context, Uri uri) { String mimeType = null; if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) { ContentResolver cr = context.getContentResolver(); mimeType = cr.getType(uri); } else { String fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri .toString()); mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension( fileExtension.toLowerCase()); } return mimeType; }