Android — используйте DownloadManager для загрузки из inputStream

У меня есть служба, которая вернет несколько байтов PDF (это может быть несколько МБ); однако строка байтов встроена в структуру xml:

<response>
   <code>1</code>
   <message>ok</message>
   <bytes>......(here comes the pdf bytes).....</bytes>
</response>

Я хотел бы сделать простой HTTP-запрос, чтобы прочитать тег code, прежде чем запускать менеджер загрузки для загрузки байтов. Поскольку код может указывать на ошибку, мне удалось бы просто показать пользователю предупреждение о сообщении.

Однако я считаю, что использование Диспетчера загрузок облегчит процесс управления загрузкой без прерывания работы приложения.

Можно ли передать входной поток, чтобы менеджер продолжил загрузку и появился в центре уведомлений Android?

Приложение может быть не в состоянии отозвать запрос после того, как его статус станет известен, поскольку статус может измениться в следующем запросе.


person htafoya    schedule 13.10.2015    source источник


Ответы (2)


Можно ли передать входной поток, чтобы менеджер продолжил загрузку и появился в центре уведомлений Android?

Нет. Придется скачивать весь файл.

person CommonsWare    schedule 13.10.2015
comment
любое обновление? У меня есть строка base64, которая будет представлять изображение или файл PDF. Мне нужно скачать его с прогрессом - person Zaid Mirza; 30.05.2019
comment
Плохо, я сказал вам неправильно, на самом деле я хочу преобразовать эту строку в файл и сохранить ее в каталоге. Я уже использую FileOutputStream, но метод записи (байты) не предоставляет никакого прослушивателя, чтобы сообщить, что это делается с записью байтов - person Zaid Mirza; 30.05.2019
comment
@ZaidMirza: Вы должны сделать это самостоятельно: записать несколько байтов, обновить свой прогресс, записать несколько байтов, обновить свой прогресс и так далее. - person CommonsWare; 30.05.2019

Если я хорошо понимаю ваш вопрос: если code указывает на ошибку, вы не хотите выполнять загрузку.

Сервер, создающий XML, очевидно, знает, есть ли ошибка. Тогда, если есть ошибка, почему бы просто не оставить bytes пустым?

person JM Lord    schedule 13.10.2015
comment
(или даже полностью исключить тег bytes) - person JM Lord; 13.10.2015
comment
Сервер оставляет их пустыми при возникновении ошибки; но приложение должно знать, пусты они или нет, прежде чем официально начать загрузку. - person htafoya; 13.10.2015
comment
Тогда я боюсь, что не понимаю вашего варианта использования. Зачем тебе это надо? Загрузка этого практически пустого XML будет очень быстрой. Ваше сообщение об ошибке появится сразу после загрузки файла... - person JM Lord; 13.10.2015