How I can get the mime type of a file having its Uri? How I can get the mime type of a file having its Uri? android android

How I can get the mime type of a file having its Uri?


You can try

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

Edit :

mime.getExtensionFromMimeType(cR.getType(uri)) 

returns -> "jpeg"

cR.getType(uri);

returns "image/jpeg" that is the expected value.


This method returns the extension of the file (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;}


for Content Uri.

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

for File Uri.

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

for Both, works for Content as well as File.

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