Estou tentando obter uma imagem da galeria.
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select picture"), resultCode );
Depois que voltei desta atividade, tenho um dado, que contém Uri. Parece:
content://media/external/images/1
Como posso converter este caminho para um verdadeiro (como em ' /sdcard/image.png
')?
obrigado
android
image-gallery
davs
fonte
fonte
uri.getPath()
te deu caminho real?Respostas:
É realmente necessário que você encontre um caminho físico?
Por exemplo,
ImageView.setImageURI()
eContentResolver.openInputStream()
permitem que você acesse o conteúdo de um arquivo sem saber seu caminho real.fonte
Isto é o que eu faço:
e:
NOTA:
managedQuery()
método está obsoleto, então não o estou usando.Última edição: Melhoria. Devemos fechar o cursor !!
fonte
@Rene Juuse - acima nos comentários ... Obrigado por este link!
. o código para obter o caminho real é um pouco diferente de um SDK para outro, portanto, abaixo temos três métodos que lidam com diferentes SDKs.
getRealPathFromURI_API19 (): retorna o caminho real para API 19 (ou superior, mas não testado) getRealPathFromURI_API11to18 (): retorna o caminho real para API 11 para API 18 getRealPathFromURI_below11 (): retorna o caminho real para API abaixo de 11
fonte: http://hmkcode.com/android-display-selected-image-and-its-real-path/
ATUALIZAÇÃO de março de 2016
Para corrigir todos os problemas com o caminho das imagens, tento criar uma galeria personalizada como Facebook e outros aplicativos. Isso porque você pode usar apenas arquivos locais (arquivos reais, não virtuais ou temporários), resolvo todos os problemas com esta biblioteca.
https://github.com/nohana/Laevatein (esta biblioteca é para tirar foto da câmera ou escolher da galeria, se você escolher da galeria ele tem uma gaveta com álbuns e apenas mostra arquivos locais)
fonte
Observação Esta é uma melhoria na resposta @ user3516549 e eu verifiquei no Moto G3 com Android 6.0.1.
Eu tenho esse problema, então tentei a resposta de @ user3516549, mas em alguns casos ela não estava funcionando corretamente. Descobri que no Android 6.0 (ou superior), quando começamos a escolha da imagem da galeria, uma tela será aberta mostrando as imagens recentes quando o usuário selecionar uma imagem desta lista, obteremos uri como
enquanto se o usuário selecionar a galeria da gaveta deslizante em vez de recente, teremos uri como
Então, eu cuidei disso em
getRealPathFromURI_API19()
EDITAR: se você está tentando obter o caminho da imagem do arquivo no sdcard externo em uma versão superior, verifique minha pergunta
fonte
EDIT: Use esta solução aqui: https://stackoverflow.com/a/20559175/2033223 Funciona perfeitamente!
Em primeiro lugar, obrigado por sua solução @luizfelipetx
Mudei um pouco sua solução. Isso funciona para mim:
Nota: Então temos documentos e imagem, dependendo se a imagem vem de 'recentes', 'galeria' ou o que quer que seja. Portanto, extraio o ID da imagem antes de procurá-lo.
fonte
Olá, aqui está o meu código completo para tirar fotos de câmeras ou vendavais
// Minha declaração de variável
// Onclick
// corpo do método
// E o resto das coisas
fonte
options.inSampleSize = calculateInSampleSize(options, 100, 100);
Isso me ajudou a obter uri da Galeria e converter em um arquivo para upload de várias partes
https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java
fonte