Então, basicamente o que estou tentando alcançar é abrir o Gallery
no Android e deixar o usuário selecionar multiple images
. Agora, esta pergunta tem sido feita com frequência, mas não estou satisfeito com as respostas. Principalmente porque encontrei algo interessante nos de docs em meu IDE (volto sobre isso mais tarde) e, portanto, não quero usar um adaptador personalizado, mas apenas o vanilla.
Agora, meu código para selecionar uma imagem é:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), 1);
Agora, as pessoas no SO e em outros sites dirão que você tem 2 opções:
1) Não use, ACTION_GET_CONTENT
mas ACTION_SEND_MULTIPLE
sim.
Este não funciona. Este está de acordo com a documentação para sending
arquivos e não retrieving
e é exatamente o que faz. Ao usar o ACTION_SEND_MULTIPLE, abri uma janela no meu dispositivo onde devo selecionar um aplicativo para enviar meus dados. Não é isso que eu quero, então me pergunto como as pessoas conseguiram isso com essa solução. Eu sinto falta de alguma coisa?
2) Implementar um custom Gallery
. Agora, esta é a minha última opção que vou considerar porque imho não é o que estou procurando porque tenho que estilizá-lo sozinho E por que diabos você simplesmente não pode selecionar várias imagens na galeria vanilla?
Deve haver uma opção para isso .. Agora o que é interessante o que eu encontrei é o seguinte:
Eu achei isso na descrição da documentação do ACTION_GET_CONTENT
.
Se o chamador puder lidar com vários itens retornados (o usuário executando várias seleções), ele pode especificar EXTRA_ALLOW_MULTIPLE para indicar isso.
Isso é muito interessante. Aqui, eles se referem ao caso de uso em que um usuário pode selecionar vários itens?
Mais tarde, eles dizem na documentação:
Você pode usar EXTRA_ALLOW_MULTIPLE para permitir que o usuário selecione vários itens.
Então, isso é bastante óbvio, certo? Isto é o que eu preciso. Mas minha seguinte pergunta é: Onde posso colocar isso EXTRA_ALLOW_MULTIPLE
? O triste é que não consigo encontrar isso em nenhum lugar no guia developers.android e também não é definido como uma constante na classe INTENT.
Alguém pode me ajudar com isso EXTRA_ALLOW_MULTIPLE
?
EXTRA_ALLOW_MULTIPLE
permite que você selecione vários itens. Obtenha os URIs chamando o getClipData()
intent retornado em onActivityResult
. O único problema é que o widget da galeria não permite a seleção múltipla. Nesse caso, clicar em qualquer imagem encerrará a seleção e você poderá obter o URI (do item único) chamando getData
na intenção retornada