Я пытаюсь загрузить файл с помощью DownloadManager внутри AsyncTaskЗагрузка файла с DownloadManager Android
private class DownloadTask extends AsyncTask<String, Void, Boolean>
{
private Context mContext;
public DownloadTask(Context context)
{
mContext = context;
}
@Override
protected Boolean doInBackground(String... strings) {
String fileName = strings[2]+"_"+strings[3]+ strings[4];
String destination = mDestination + fileName;
final Uri uri = Uri.parse("file://" + destination);
mDownloading = true;
//If the file is already downloading just return.
File file = new File(destination);
if (file.exists()) {
return true;
}
//set downloadmanager
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(strings[0]));
request.setDescription(mContext.getString(R.string.downloading)+ " "+strings[1]);
request.setTitle(mContext.getString(R.string.downloading_title));
//set destination
request.setDestinationUri(uri);
// get download service and enqueue file
final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
final long downloadId = manager.enqueue(request);
//set BroadcastReceiver to enable next download
BroadcastReceiver onComplete = new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
unregisterReceiver(this);
mDownloading = false;
}
};
//register receiver for when file download is compete
registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
return true;
}
}`
код работает прекрасно, когда я прохожу URL файла. Дело в том, что мы хотим сделать GET-вызов WEB, созданный на PHP. Этот метод WEB создает или выбирает файл и перенаправляет его с помощью заголовка ("Location: ".$database->single()['Url']);
Но когда мы вызываем звонок из DownloadManager, он сразу вызывает registerReceiver.
Кто-нибудь знает, почему это происходит?
Если мы используем HttpURLConnection
, он отлично работает, но мы хотели бы делегировать всю тяжелую работу загрузки в DownloadManager.
Благодарим вас за комментарии.
У вас нет ответа, но попробуйте скачать с помощью этого либрана: https://github.com/tonyofrancis/Fetch?utm_source=android-arsenal.com&utm_medium=referral&utm_campaign=5196 –
Спасибо, я попробую. – Gabrielkdc
К сожалению, для меня я получил точные результаты с помощью Fetch. Однако большое открытие. – Gabrielkdc