tenho um aplicativo com galeria de imagens e quero que o usuário possa salvá-lo em sua própria galeria. Eu criei um menu de opções com uma única voz "salvar" para permitir isso, mas o problema é ... como posso salvar a imagem na galeria?
este é o meu código:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.menuFinale:
imgView.setDrawingCacheEnabled(true);
Bitmap bitmap = imgView.getDrawingCache();
File root = Environment.getExternalStorageDirectory();
File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
não tenho certeza desta parte do código:
File root = Environment.getExternalStorageDirectory();
File file = new File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
é correto salvar na galeria? infelizmente, o código não funciona :(
android
imageview
gallery
save-image
Christian Giupponi
fonte
fonte
Respostas:
O código anterior adicionará a imagem no final da galeria. Se você quiser modificar a data para que apareça no início ou qualquer outro metadado, consulte o código abaixo (Cortesia de SK, samkirton ):
https://gist.github.com/samkirton/0242ba81d7ca00b475b9
fonte
.git
no final)Na verdade, você pode salvar sua foto em qualquer lugar. Se você deseja salvar em um espaço público, para que qualquer outro aplicativo possa acessar, use este código:
A foto não vai para o álbum. Para fazer isso, você precisa chamar uma varredura:
Você pode encontrar mais informações em https://developer.android.com/training/camera/photobasics.html#TaskGallery
fonte
Eu tentei muitas coisas para deixar isso funcionar em Marshmallow e Lollipop. Finalmente, acabei movendo a imagem salva para a pasta DCIM (o novo aplicativo Google Photo digitaliza imagens apenas se elas estiverem aparentemente dentro desta pasta)
E então o código padrão para escanear arquivos que você também pode encontrar no site Google Developers .
Lembre-se de que esta pasta não pode estar presente em todos os dispositivos do mundo e que a partir do Marshmallow (API 23), você precisa solicitar a permissão WRITE_EXTERNAL_STORAGE para o usuário.
fonte
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
fez o truque para mim. Obrigado!getExternalStoragePublicDirectory()
agora está obsoleto na API 29. Need to use MediaStoreDe acordo com este curso , a maneira correta de fazer isso é:
Isso fornecerá o caminho raiz para o diretório da galeria.
fonte
fonte
Você pode criar um diretório dentro da pasta da câmera e salvar a imagem. Depois disso, você pode simplesmente realizar sua varredura. Ele mostrará instantaneamente sua imagem na galeria.
fonte
Venho aqui com a mesma dúvida, mas para Xamarin para Android, usei a resposta de Sigrist para fazer este método após salvar meu arquivo:
e resolveu meu problema, Thx Sigrist. Coloquei aqui porque não encontrei um answare sobre isso para o Xamarin e espero que possa ajudar outras pessoas.
fonte
No meu caso, as soluções acima não funcionaram, tive que fazer o seguinte:
fonte
ContentProvider
preferível solytionEste código está no método onCreate. Este código é para criar um diretório de app_name. Agora, este diretório pode ser acessado usando o aplicativo gerenciador de arquivos padrão no android. Use esta string filePath sempre que necessário para definir sua pasta de destino. Tenho certeza de que esse método funciona no Android 7 também porque testei nele. Portanto, ele pode funcionar em outras versões do Android também.
fonte