Java MimetypesFileTypeMap всегда возвращает приложение / октет-поток на эмулятор Android

Я пытаюсь определить Mime / Media Type файлов, хранящихся на устройстве Android (фактически виртуальное устройство, которое я использую с эмулятором). Я нашел этот ресурс Получить MIME-тип из файла, который рекомендует javax.activation.MimetypesFileTypeMap , однако, когда я запускаю следующий код, я получаю application/octet-stream для всех типов файлов:

 MimetypesFileTypeMap map = new MimetypesFileTypeMap(); File dir = Environment.getExternalStorageDirectory(); File[] files = dir.listFiles(); String mimeType; for( int i = 0; i < files.length; ++i ) { if( files[i].isDirectory() == false ) { mimeType = map.getContentType(files[i]); if( mimeType.toLowerCase().equals("application/octet-stream") ) { Log.d("mytag", String.format( "Unable to determine the mime type of file %s.", files[i].getName())); } } } 

Я тестировал это с файлами, имеющими следующие расширения: jpg, txt, doc, xslx и pdf, и все они возвращают одно и то же. Есть ли что-то, что нужно сделать для инициализации карты? Может ли эта библиотека не найти список поддерживаемых mime-типов на Android? Есть ли лучший способ получить тип mime файла на Android?

И эта проблема тоже. В соответствии с Java-документами MimetypesFileTypeMap ищет

  1. Программно добавлены записи в экземпляр MimetypesFileTypeMap.
  2. Файл .mime.types в домашнем каталоге пользователя.
  3. Файл /lib/mime.types
  4. Файл или ресурсы с именем META-INF / mime-types
  5. Файл или ресурсы с именем META-INF / mime-types.default (обычно только в файле activation.jar)

Если ваши Mimetypes выходят как «application / octet-stream», это означает, что у вас нет ни одного из вышеуказанных файлов (или они присутствуют, но неполны) и не добавили никаких записей в ваш экземпляр MimetypesFileTypeMap.

Решать…

Формат спецификации mimetypesFileTypeMap mimetypes

 # comments start with hash marks # format is <mime type> <space separated file extensions> # for example, for an image mime type and a text mime type image png tif jpg jpeg bmp text txt text rtf TXT # either place those lines within the files specified by 2-4 or MimetypesFileTypeMap mtftp = new MimetypesFileTypeMap(); mtftp.addMimeTypes("image png tif jpg jpeg bmp") # and it's as easy as that! 
Intereting Posts
Функциональное тестирование Android с помощью кинжала Как удалить функцию масштабирования из библиотеки mpchart android? Горизонтальное RecyclerView с элементами с динамической высотой Android: launchMode = проблема SingleTask Добавление viewpager в качестве прокручиваемого заголовка в listview Можете ли вы безопасно называть «getDrawable» или «decodeResource» в потоке пользовательского интерфейса в Android Только эмулятор ошибки ACCESS_FINE_LOCATION Отсутствие взаимного авторизации на Android w / javax.net.ssl.SSLHandshakeException: сообщение об ошибке не выполнено Ограничить установку приложения в планшетах Перезагрузите автономное устройство Android удаленно Как я могу запустить приложение для Android при нажатии кнопки увеличения или уменьшения громкости? Виджет Android NumberPicker, как получить значение, введенное через softkeyboard? Какая версия JDK (уровень языка) требуется для Android Studio? Как войти в twitter используя Oauth из моего приложения для Android? Как добавить к всплывающему окну «Добавить в рабочий стол» для Android-андроида