Я пытаюсь загрузить файл 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, доступ к нему можно получить через браузер.