Eu estou usando o seguinte código:
Intent fileIntent = new Intent(Intent.ACTION_GET_CONTENT);
fileIntent.setType("image/jpg|image/png|image/jpeg");
startActivityForResult(fileIntent, REQUEST_FILE);
Eu acredito que o código deve permitir-me para selecionar qualquer arquivo jpg, png ou jpeg, mas isso não acontece.
Por outro lado mudando fileIntent.setType ( "image / jpg | image / png | image / jpeg"); para fileIntent.setType ( "image / *"); permite selecionar o arquivo. Mas também permite selecionar outros arquivos de imagem que não querem.
O que precisa ser corrigido no fileIntent.setType ( "image / jpg | image / png | image / jpeg"); por isso permite escolher arquivos desses tipos, e não outros?
Você só pode especificar um único mimetype com setType()
, em vez aplicar um extra com a chave Intent.EXTRA_MIME_TYPES
com uma variedade de tipos MIME:
fileIntent.putExtra(Intent.EXTRA_MIME_TYPES, Arrays.asList("image/png", "image/jpeg").toArray());
Descobri que mesmo quando fornecendo uma lista de mimetypes você ainda pode precisar aplicar intent.fileType("*/*");
à intenção independentemente, no entanto, a lista de mimetypes terá preferência.