Uso o seguinte método para fazer o download de uma imagem.
public void downloadFile(String uRl, String title, String description) { File direct = new File(Environment.getExternalStorageDirectory() + "/FPSWallpapers"); if (!direct.exists()) { direct.mkdirs(); } DownloadManager mgr = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE); Uri downloadUri = Uri.parse(uRl); DownloadManager.Request request = new DownloadManager.Request( downloadUri); request.setAllowedNetworkTypes( DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE) .setAllowedOverRoaming(false).setTitle(title) .setDescription(description) .setDestinationInExternalPublicDir("/FPSWallpapers", title); mgr.enqueue(request); }
Ele funciona normalmente, faz o download e salva a imagem. Mas queria mostrar um progressDialog
enquanto o download é feito, e depois mostrar uma mensagem dizendo que foi conluído.
Tentei da seguinte forma:
public void downloadFile(String uRl, String title, String description) { ProgressDialog progress = new ProgressDialog(mContext); while (!checkDownloadComplete.isDownloadComplete) { progress.setMessage("Downloading Music :) "); progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progress.setIndeterminate(true); } File direct = new File(Environment.getExternalStorageDirectory() + "/FPSWallpapers"); if (!direct.exists()) { direct.mkdirs(); } DownloadManager mgr = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE); Uri downloadUri = Uri.parse(uRl); DownloadManager.Request request = new DownloadManager.Request( downloadUri); request.setAllowedNetworkTypes( DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE) .setAllowedOverRoaming(false).setTitle(title) .setDescription(description) .setDestinationInExternalPublicDir("/FPSWallpapers", title); mgr.enqueue(request); progress.dismiss(); }
e a classe de Broadcastreceiver:
public class checkDownloadComplete extends BroadcastReceiver { public static boolean isDownloadComplete= false; @Override public void onReceive(Context context, Intent intent) { isDownloadComplete = true; Log.i("Download completed?", String.valueOf(isDownloadComplete)); }
}
Mas o app fica em algum loop que trava. Como mostrar um progressdialog enquanto faz esse download?
PS: As permissões necessárias foram dadas;