DownloadManager.ACTION_DOWNLOAD_COMPLETE broadcast receiver receiving same download id more than once with different download statuses in Android

This is a reported bug see:

The way around I found is to verify if the download was a success, if not ditch the intent or re-queue the file if it was never downloaded…

Lost a couple of hours figuring that one 🙁

** Edit: adding code example **

 * Check if download was valid, see issue
 * @param long1
 * @return
private boolean validDownload(long downloadId) {

    Log.d(TAG,"Checking download status for id: " + downloadId);

    //Verify if download is a success
    Cursor c= dMgr.query(new DownloadManager.Query().setFilterById(downloadId));

        int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));

        if(status == DownloadManager.STATUS_SUCCESSFUL){
            return true; //Download is valid, celebrate
            int reason = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_REASON));
            Log.d(TAG, "Download not correct, status [" + status + "] reason [" + reason + "]");            
            return false;
    return false;                                   

For complete code see :

Leave a Comment