Загрузка файла PDF с помощью DownloadManager - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь загрузить файл PDF с сервера.

Внешнее хранилище сохранено:

статический окончательный файл fSdcard = новый файл (Environment.getExternalStorageDirectory ().toString (), "VDTEC");

Имя файла:

статический окончательный файл fManualMult = новый файл (fSdcard, "ManualMult.pdf");

Идентификатор загрузки

частный длинный lDownloadID;

И URL:

static final String sUrlManualMult =«http://germipasto.com.br/comunicacao/app/MULT/MANUAL%20VD%20TEC%20MULT%20-%20revis%C3%A3o%2001%20-%2002-fev%202018.pdf";

Когда я нажимаю кнопку, вызывается метод beginDownload:

private void beginDownload () {

    /*
    Create a DownloadManager.Request with all the information necessary to start the download
     */

    DownloadManager.Request request=new DownloadManager.Request(Uri.parse(sUrlManualMult))
            .setMimeType("application/pdf")
            .setTitle("Dummy File")// Title of the Download Notification
            .setDescription("Downloading")// Description of the Download Notification
            .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE)// Visibility of the download Notification
            .setDestinationUri(Uri.fromFile(fManualMult))// Uri of the destination file
            .setRequiresCharging(false)// Set if charging is required to begin the download
            .setAllowedOverMetered(true)// Set if download is allowed on Mobile network
            .setAllowedOverRoaming(true);// Set if download is allowed on roaming network
    request.allowScanningByMediaScanner();
    DownloadManager downloadManager= (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
    lDownloadID = downloadManager.enqueue(request);// enqueue puts the download request in the queue.
}

У меня также есть вещатель, который показывает тост, когда загрузка завершена:

private BroadcastReceiver onDownloadComplete = new BroadcastReceiver () {

    @Override
    public void onReceive(Context context, Intent intent) {
        //Fetching the download id received with the broadcast
        long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
        //Checking if the received broadcast is for our enqueued download by matching download id
        if (lDownloadID == id) {
            Toast.makeText(DocumentosActivity.this, "Download Completed", Toast.LENGTH_SHORT).show();
        }
    }
};

Изарегистрируйте его:

registerReceiver (onDownloadComplete, новый IntentFilter (DownloadManager.ACTION_DOWNLOAD_COMPLETE));

Проблема: Когда я нажимаю, тост отображается через 1-2 секунды, и загрузка не завершена.Что я делаю не так?

PS: Я обнаружил, что если изменить ссылку (например, используя http://speedtest.ftp.otenet.gr/files/test10Mb.db напрямую), менеджер загрузок работает.Может быть ошибка с моей ссылкой?Я загрузил файл через ftp, доступ к нему можно получить через браузер.

...