Eu sei o caminho absoluto de uma imagem (por exemplo, /sdcard/cats.jpg). Existe alguma maneira de obter a interface do usuário para este arquivo?
Na verdade, no meu código, faço o download de uma imagem e a salvo em um local específico. Para definir a imagem em uma instância do ImageView, atualmente abro o arquivo usando o caminho, obtenho os bytes e crie um bitmap e, em seguida, defina o bitmap na instância do ImageView. Este é um processo muito lento. Se eu pudesse obter o conteúdo da interface do usuário, poderia usar o método com muita facilidade. imageView.setImageUri(uri)
Respostas:
Tente com:
Ou com:
fonte
Uri.fromFile
não vai trabalhar no android 26+, você deve usar provedor de arquivoATUALIZAR
Eu tive a mesma pergunta para minha atividade do explorador de arquivos. Você deve saber que o conteúdo do arquivo suporta apenas dados do mediastore, como imagem, áudio e vídeo. Estou fornecendo o código para obter o conteúdo da imagem uri ao selecionar uma imagem do sdcard. Experimente este código, talvez ele funcione para você ...
fonte
MediaStore.Images.Media
paraMediaStore.Video.Media
, mas ainda sem sorte.// Este código funciona para imagens no 2.2, não tenho certeza se existem outros tipos de mídia
fonte
A solução aceita é provavelmente a melhor aposta para seus propósitos, mas para realmente responder à pergunta na linha de assunto:
No meu aplicativo, eu tenho que obter o caminho dos URIs e obter o URI dos caminhos. O antigo:
O último (que eu faço para vídeos, mas também pode ser usado para Áudio ou Arquivos ou outros tipos de conteúdo armazenado, substituindo MediaStore.Audio (etc) por MediaStore.Video):
Basicamente, a
DATA
colunaMediaStore
(ou qualquer subseção que você está consultando) armazena o caminho do arquivo, para que você use essas informações para procurá-lo.fonte
OpenableColumns.DISPLAY_NAME & OpenableColumns.SIZE
se o aplicativo de envio ainda segue as "regras". Descobri que alguns aplicativos principais retornam apenas esses dois campos e nem sempre o_data
campo. No caso em que você não possui o campo de dados que normalmente contém um caminho direto para o conteúdo, você deve primeiro ler o conteúdo e gravá-lo em um arquivo ou na memória e, em seguida, ter seu próprio caminho.Você pode usar essas duas maneiras com base no uso
Uri uri = Uri.parse("String file location");
ou
Uri uri = Uri.fromFile(new File("string file location"));
Eu tentei nos dois sentidos e nos dois trabalhos.
fonte
A maneira mais fácil e robusta de criar o Content Uri a
content://
partir de um arquivo é usar o FileProvider . O Uri fornecido pelo FileProvider também pode ser usado, fornecendo o Uri para o compartilhamento de arquivos com outros aplicativos. Para obter o File Uri a partir de um caminho absoluto,File
você pode usar DocumentFile.fromFile (novo arquivo (caminho, nome)), ele é adicionado na Api 22 e retorna nulo para as versões abaixo.fonte
É tarde, mas pode ajudar alguém no futuro.
Para obter o URI de conteúdo de um arquivo, você pode usar o seguinte método:
FileProvider.getUriForFile(Context context, String authority, File file)
Retorna o URI do conteúdo.
Verifique isso para saber como configurar um
FileProvider
fonte
Obtendo o ID do arquivo sem escrever nenhum código, apenas com os comandos da CLI adb shell:
fonte
Permission Denial: Do not have permission in call getContentProviderExternal() from pid=15660, uid=10113 requires android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY
menos que esteja enraizado.É melhor usar uma validação para suportar versões anteriores ao Android N, por exemplo:
https://es.stackoverflow.com/questions/71443/reporte-crash-android-os-fileuriexposedexception-en-android-n
fonte
Você pode tentar o trecho de código abaixo
fonte