Resolvido: Como armazenar uma imagem baixada no armazenamento interno usando o Download Manager no Android
Introdução
O Android fornece várias ferramentas e recursos para o desenvolvimento de aplicativos, incluindo a capacidade de baixar arquivos usando o Download Manager e armazená-los no armazenamento interno do dispositivo. Neste artigo, vamos explorar como utilizar o Download Manager para baixar uma imagem e salvá-la no armazenamento interno do Android.
Passo 1: Configurando as permissões necessárias
Antes de começarmos a usar o Download Manager, precisamos garantir que as permissões adequadas estejam configuradas no arquivo AndroidManifest.xml do nosso projeto. Adicione as seguintes permissões:
xml
Copy code
<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
A permissão INTERNET permite que o aplicativo acesse a internet para baixar o arquivo, enquanto a permissão WRITE_EXTERNAL_STORAGE é necessária para salvar a imagem no armazenamento interno.
Passo 2: Implementando o Download Manager
Em seguida, precisamos implementar a lógica para baixar a imagem usando o Download Manager. Primeiro, vamos criar uma instância do Download Manager e configurar a solicitação de download:
java
Copy code
DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
Uri uri = Uri.parse(“URL_DA_IMAGEM_AQUI”);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_PICTURES, “imagem.jpg”);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
long downloadId = downloadManager.enqueue(request);
No código acima, estamos criando uma solicitação de download utilizando a URL da imagem desejada. Em seguida, definimos o diretório de destino usando setDestinationInExternalFilesDir(). Estamos usando Environment.DIRECTORY_PICTURES para salvar a imagem na pasta “Pictures” do armazenamento interno. Você pode alterar o diretório de destino conforme necessário.
Também configuramos a visibilidade da notificação do download como VISIBILITY_VISIBLE_NOTIFY_COMPLETED, para que o usuário seja notificado quando o download for concluído.
Por fim, chamamos enqueue() no Download Manager para iniciar o download e obtemos o ID do download retornado para referência futura.
Passo 3: Tratando a conclusão do download
Agora, precisamos lidar com a conclusão do download e salvar a imagem no armazenamento interno. Podemos fazer isso implementando um BroadcastReceiver:
java
Copy code
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long receivedDownloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if (downloadId == receivedDownloadId) {
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadId);
Cursor cursor = downloadManager.query(query);
if (cursor.moveToFirst()) {
int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
if (status == DownloadManager.STATUS_SUCCESSFUL) {
String fileUri = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
// Aqui você pode manipular o arquivo baixado, como copiá-lo para outra pasta ou exibir no aplicativo.
// Lembre-se de lidar com as permissões de armazenamento conforme necessário.
}
}
cursor.close();
}
}
};
registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
No código acima, estamos registrando um BroadcastReceiver para receber a ação ACTION_DOWNLOAD_COMPLETE, que é enviada quando o download é concluído. No método onReceive(), verificamos se o ID do download recebido corresponde ao ID do nosso download anteriormente iniciado.
Em seguida, consultamos o Download Manager usando um Query para obter informações sobre o download concluído. Se o status do download for STATUS_SUCCESSFUL, podemos obter a URI do arquivo usando COLUMN_LOCAL_URI. A partir desse ponto, você pode realizar operações adicionais com o arquivo baixado, como copiá-lo para outra pasta ou exibi-lo no aplicativo.
Conclusão
Neste artigo, exploramos como utilizar o Download Manager do Android para baixar uma imagem e salvá-la no armazenamento interno do dispositivo. Através da configuração adequada das permissões, criação da solicitação de download e tratamento da conclusão do download, podemos realizar essa tarefa com facilidade. Lembre-se de lidar corretamente com as permissões de armazenamento e outras operações relacionadas ao arquivo, garantindo uma experiência segura e eficiente para os usuários do seu aplicativo Android.