Como determinar os tipos de arquivos em Android
Pergunta
Qual é a melhor maneira de determinar um tipo de arquivo no Android?
Eu quero verificar se o arquivo de dados é uma imagem, um arquivo de música, etc.
Solução
- Incluir alguns arquivos
mime.types
em seus ativos pasta (por exemplo, de /etc/mime.types). - Incluir
activation.jar
(de JAF) no seu caminho de compilação. -
Use algo como isto:
try { MimetypesFileTypeMap mftm = new MimetypesFileTypeMap(getAssets().open("mime.types")); FileTypeMap.setDefaultFileTypeMap(mftm); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
-
Em seguida, use
FileDataSource.getContentType()
obter tipos de arquivo.
Outras dicas
public static String getMimeType(String fileUrl) {
String extension = MimeTypeMap.getFileExtensionFromUrl(fileUrl);
final String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
return (mimeType != null) ? mimeType : "unknown";
}
Uma maneira comum é por sua extensão só, ou você pode analisar o cabeçalho, mas deve ser muito mais lento e mais complexo para as suas aplicações.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow