Gostaria de obter o caminho completo do arquivo de um URI. O URI não é uma imagem, mas é um arquivo de música, mas se eu fizer isso como a solução MediaStore, ele não funcionará se o usuário do aplicativo selecionar, por exemplo, Astro como navegador, em vez de Music Player. Como faço para resolver isso?
99
content://
ou qualquer outro Uri não arquivado.O método PathUtil só funcionará em oreo abaixo e se for oreo é provável que travar porque em oreo não obteremos o id, mas o caminho completo em data.getData (), então tudo o que você precisa fazer é criar um arquivo de uri e obtenha seu caminho de getPath () e divida-o. abaixo está o código de trabalho: -
O código acima funcionará em oreo e se estiver abaixo de oreo então o PathUtil funcionará. Obrigado!
PathUtil.java
fonte
Obter caminho do URI Use a classe abaixo para todas as versões do Android. acessar qualquer tipo de arquivo .
fonte
Experimente isso.
fonte
null
Você pode usar obter o caminho do arquivo de diferentes versões de SDk
Use RealPathUtils para isso
** Agora pegue o caminho do arquivo do URI **
fonte
uma das respostas que existe na página atual ( esta ), está correta mas contém alguns erros. por exemplo, ele não funcionará em dispositivos com API 29+. Vou atualizar o código acima e postar sua nova versão. Acho que esta postagem deve ser marcada como a resposta final.
Código atualizado: ( Adicionado suporte para WhatsApp )
fonte
no arquivo build.gradle adicione este
Agora ligue
FileUtils.getPath(context, uri);
da sua classe principal.fonte
Sei que isso já foi respondido. Mas há alguns problemas que encontrei nos comentários. Eu encontrei uma ótima solução confiável bifurcada a partir daqui
para usá-lo
File file=FileUtils.getFile(uri);
fonte
Código de snippet ao receber o caminho do arquivo.
Bellow é uma classe que pode ser acessada criando um novo objeto. você também precisará adicionar a uma dependência no gradel
implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'
fonte
Para obter qualquer tipo de caminho de arquivo, use isso (retirado de https://github.com/iPaulPro/aFileChooser )
fonte
Resposta de @SAParkhid em kotlin.
fonte
Foi difícil tentar descobrir isso em Xamarin. A partir das sugestões acima, cheguei a essa solução.
fonte
Android 7.0
Column_Index é-1
quando você escolhe um arquivo usandoActionContentGet
e digite,*/*
digamos, um PDFfonte