private boolean guessFilename(final String preset1) {
        final String preset = StringUtils.isNotBlank(preset1) ? preset1 : ContentStorage.get().getName(uri);
        filename = StringUtils.isNotBlank(preset) ? preset : uri.getPath();    // uri.getLastPathSegment doesn't help here, if path is encoded
        if (filename != null) {
            filename = FileUtils.getFilenameFromPath(filename);
            if (StringUtils.isNotBlank(downloader.forceExtension)) {
                final int posExt = filename.lastIndexOf('.');
                if (posExt == -1 || !(StringUtils.equalsIgnoreCase(downloader.forceExtension, filename.substring(posExt)))) {
                    filename += downloader.forceExtension;
                }
            }
        }
        if (filename == null) {
            filename = FileNameCreator.OFFLINE_MAPS.createName();
        }
        return true;
    }
receives a file downloaded with system's DownloadManager, copying it to the appropriate c:geo folder
called internally by {@link ReceiveDownloadService} or {@link ReceiveDownloadWorker}
main/src/main/java/cgeo/geocaching/downloader/ReceiveDownload.java