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