public static void dumpDownloadmanagerInfos(@NonNull final Activity activity) {
        final DownloadManager downloadManager = (DownloadManager) activity.getSystemService(DOWNLOAD_SERVICE);
        final DownloadManager.Query query = new DownloadManager.Query();
        final StringBuilder sb = new StringBuilder();
        try (Cursor c = downloadManager.query(query)) {
            final int columnStatus = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
            final int columnReason = c.getColumnIndex(DownloadManager.COLUMN_REASON);
            final int[] columns = {
                    c.getColumnIndex(DownloadManager.COLUMN_ID),
                    c.getColumnIndex(DownloadManager.COLUMN_TITLE),
                    columnStatus,
                    columnReason,
                    c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR),
                    c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES),
                    c.getColumnIndex(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP),
                    c.getColumnIndex(DownloadManager.COLUMN_MEDIA_TYPE),
                    c.getColumnIndex(DownloadManager.COLUMN_URI),
                    c.getColumnIndex(DownloadManager.COLUMN_MEDIAPROVIDER_URI),
                    c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)
            };
            while (c.moveToNext()) {
                for (int column : columns) {
                    sb.append("- ").append(c.getColumnName(column)).append(" = ");
                    if (column == columnStatus) {
                        sb.append(c.getString(column));
                        final int status = c.getInt(column);
                        if (status == DownloadManager.STATUS_FAILED) {
                            sb.append(" - ").append(R.string.asdm_status_failed);
                        } else if (status == DownloadManager.STATUS_PAUSED) {
                            sb.append(" - ").append(R.string.asdm_status_paused);
                        } else if (status == DownloadManager.STATUS_PENDING) {
                            sb.append(" - ").append(R.string.asdm_status_pending);
                        } else if (status == DownloadManager.STATUS_RUNNING) {
                            sb.append(" - ").append(R.string.asdm_status_running);
                        } else if (status == DownloadManager.STATUS_SUCCESSFUL) {
                            sb.append(" - ").append(R.string.asdm_status_successful);
                        }
                    } else if (column == columnReason) {
                        final int reason = c.getInt(column);
                        sb.append(reason);
                        if (reason == DownloadManager.PAUSED_QUEUED_FOR_WIFI) {
                            sb.append(" - ").append(R.string.asdm_paused_queued_for_wifi);
                        } else if (reason == DownloadManager.PAUSED_UNKNOWN) {
                            sb.append(" - ").append(R.string.asdm_paused_unknown);
                        } else if (reason == DownloadManager.PAUSED_WAITING_FOR_NETWORK) {
                            sb.append(" - ").append(R.string.asdm_paused_waiting_for_network);
                        } else if (reason == DownloadManager.PAUSED_WAITING_TO_RETRY) {
                            sb.append(" - ").append(R.string.asdm_paused_waiting_to_retry);
                        } else if (reason == DownloadManager.ERROR_CANNOT_RESUME) {
                            sb.append(" - ").append(R.string.asdm_error_cannot_resume);
                        } else if (reason == DownloadManager.ERROR_DEVICE_NOT_FOUND) {
                            sb.append(" - ").append(R.string.asdm_error_device_not_found);
                        } else if (reason == DownloadManager.ERROR_FILE_ALREADY_EXISTS) {
                            sb.append(" - ").append(R.string.asdm_error_file_already_exists);
                        } else if (reason == DownloadManager.ERROR_FILE_ERROR) {
                            sb.append(" - ").append(R.string.asdm_error_file_error);
                        } else if (reason == DownloadManager.ERROR_HTTP_DATA_ERROR) {
                            sb.append(" - ").append(R.string.asdm_error_http_data_error);
                        } else if (reason == DownloadManager.ERROR_INSUFFICIENT_SPACE) {
                            sb.append(" - ").append(R.string.asdm_error_insufficient_space);
                        } else if (reason == DownloadManager.ERROR_TOO_MANY_REDIRECTS) {
                            sb.append(" - ").append(R.string.asdm_error_too_many_redirects);
                        } else if (reason == DownloadManager.ERROR_UNHANDLED_HTTP_CODE) {
                            sb.append(" - ").append(R.string.asdm_error_unhandled_http_code);
                        } else if (reason == DownloadManager.ERROR_UNKNOWN) {
                            sb.append(" - ").append(R.string.asdm_error_unknown);
                        }

                    } else {
                        sb.append(c.getString(column));
                    }
                    sb.append("\n");
                }
                sb.append("\n---\n\n");
            }
        }

        SimpleDialog.of(activity).setTitle(R.string.debug_current_downloads).setMessage(TextParam.text(sb.toString()).setMarkdown(true)).show();
    }
check for successfully completed, but not yet received downloads
and offer to download them
main/src/main/java/cgeo/geocaching/downloader/DownloaderUtils.java