Java MimetypesFileTypeMap siempre devuelve la aplicación / octet-stream en el emulador de Android

Estoy tratando de determinar el Mime / Media Tipo de archivos almacenados en un dispositivo Android (en realidad un dispositivo virtual que estoy usando con el emulador). Encontré este recurso Obtener el tipo MIME de un archivo que recomienda el javax.activation.MimetypesFileTypeMap , sin embargo, cuando ejecuto el siguiente código, obtengo la application/octet-stream para todos los tipos de archivo:

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

He probado esto con archivos que tienen las siguientes extensiones: jpg, txt, doc, xslx y pdf y todos devuelven lo mismo. ¿Hay algo que tengo que hacer para inicializar el mapa? ¿Esta biblioteca no puede encontrar la lista de tipos de mime compatibles en Android? ¿Hay una mejor manera de obtener el tipo mime de un archivo en Android?

One Solution collect form web for “Java MimetypesFileTypeMap siempre devuelve la aplicación / octet-stream en el emulador de Android”

Tenía este problema también. Según los documentos de Java, las búsquedas de MimetypesFileTypeMap

  1. Las entradas agregadas mediante programación a la instancia de MimetypesFileTypeMap.
  2. El archivo .mime.types en el directorio personal del usuario.
  3. El archivo /lib/mime.types
  4. El archivo o los recursos denominados META-INF / mime-types
  5. El archivo o los recursos denominados META-INF / mime-types.default (usualmente sólo se encuentran en el archivo activate.jar)

Si sus Mimetypes salen como "application / octet-stream" esto implica que no tiene ninguno de los archivos anteriores presentes (o están presentes pero incompletos) y no ha agregado ninguna entrada a su instancia de MimetypesFileTypeMap.

Resolver…

Formato de especificación de mimetypes de MimetypesFileTypeMap

 # 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! 
  • Múltiples tipos de MIME en Android
  • Problema de alojamiento web, archivos .apk para descargar desde el navegador android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.