Muitas vezes nossos aplicativos podem precisar fazer o download de imagens que não devem aparecer na galeria de imagens e somente serem exibidas pela aplicação.
A solução para este problema é simples e pode ser feita de forma manual pelo usuário do sistema ou programaticamente dentro de seu aplicativo. Basta criar um arquivo chamado ".nomedia" na pasta que você deseja não indexar a galeria de imagens.
//Método onCreate da activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Path do arquivo .nomedia
String noMediaPath = Environment.getExternalStorageDirectory() + "/ApplicationFolder/ + ".nomedia";
//Instanciando arquivo
File noMediaFile = new File(noMediaPath);
//Testando se arquivo já existe dentro da pasta da minha aplicação
if (!noMediaFile.exists()) {
try {
//Pega o path dos diretórios da minha aplicação
String dirTreePath = noMediaFile.getParent();
//Instancia o diretório da aplicação
File dirTree = new File(dirTreePath);
//E se ele não existir cria-os antes de criar o arquivo .nomedia
if (!dirTree.exists()) {
dirTree.mkdirs();
}
//Cria o arquivo .nomedia
noMediaFile.createNewFile();
//Aqui alertaremos ao Android que o sistema de arquivo sofreu uma modificação
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
} catch (Exception e) {
}
}
setContentView(R.layout.minha_activity);
}
Pode ser necessário limpar o cache da Galeria de Imagens do android para que o código produza o efeito desejado.
Nenhum comentário:
Postar um comentário