Как определить тип файла MIME в Android? - PullRequest
152 голосов
/ 21 декабря 2011

Предположим, у меня есть полный путь к файлу, например: (/ sdcard / tlogo.png).Я хочу знать его тип MIME.

Я создал для него функцию

public static String getMimeType(File file, Context context)    
{
    Uri uri = Uri.fromFile(file);
    ContentResolver cR = context.getContentResolver();
    MimeTypeMap mime = MimeTypeMap.getSingleton();
    String type = mime.getExtensionFromMimeType(cR.getType(uri));
    return type;
}

, но когда я его вызываю, он возвращает ноль.

File file = new File(filePath);
String fileType=CommonFunctions.getMimeType(file, context);

Ответы [ 23 ]

0 голосов
/ 25 августа 2015

у вас есть несколько вариантов, чтобы получить расширение файла: например: 1- String filename = uri.getLastPathSegment(); см. ссылку

2 - вы также можете использовать этот код

 filePath .substring(filePath.lastIndexOf(".")+1);

но это не очень хорошо. 3 - если у вас есть URI файла, используйте этот код

String[] projection = { MediaStore.MediaColumns.DATA,
MediaStore.MediaColumns.MIME_TYPE };

4 - если у вас есть URL, используйте этот код:

 public static String getMimeType(String url) {
String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
if (extension != null) { 


  type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    }

return type;
}

наслаждайтесь вашим кодом:)

0 голосов
/ 17 апреля 2019

Я столкнулся с подобной проблемой. До сих пор я знаю, что результат может отличаться для разных имен, поэтому, наконец, пришел к этому решению.

public String getMimeType(String filePath) {
    String type = null;
    String extension = null;
    int i = filePath.lastIndexOf('.');
    if (i > 0)
        extension = filePath.substring(i+1);
    if (extension != null)
        type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    return type;
}  
0 голосов
/ 07 ноября 2015
// new processing the mime type out of Uri which may return null in some cases
String mimeType = getContentResolver().getType(uri);
// old processing the mime type out of path using the extension part if new way returned null
if (mimeType == null){mimeType URLConnection.guessContentTypeFromName(path);}
...