Подтвердить что ты не робот

Возврат входного потока из дескриптора файла пакета с использованием андроидов DownloadManager

Я пытаюсь загрузить файл с помощью android DownloadManager, получить доступ к файлу и записать его в новое место (в этом примере я загружаю базу данных, которая скомпилирована на стороне сервера, и ее необходимо записать в/база данных/каталог).

Я читал и мне удалось загрузить файл и активировать BroadcastReceiver, но в этот момент я застрял.

Я вернул файл ParcelFileDecriptor, но у меня возникли проблемы с преобразованием его в поток. Я не могу решить, является ли ParcelFileDecriptor.AutoCloseInputStream красной селерой или нет, но я уверен, что ParcelFileDecriptor имеет относительность к потоку, но я действительно изо всех сил пытаюсь его решить. Любая помощь будет высоко оценена.

4b9b3361

Ответ 1

Я проработал это примерно через 5 минут после публикации и теперь чувствую себя довольно глупо. В любом случае, если вы уже начали загрузку и настроили Broadcast Reciver, следующий код выполнит эту работу...

            ParcelFileDescriptor file = dMgr.openDownloadedFile(downloadId);
            File dbFile = getDatabasePath(Roads.DATABASE_NAME);

            InputStream fileStream = new FileInputStream(file.getFileDescriptor());
            OutputStream newDatabase = new FileOutputStream(dbFile);

            byte[] buffer = new byte[1024];
            int length;

            while((length = fileStream.read(buffer)) > 0)
            {
                newDatabase.write(buffer, 0, length);
            }

            newDatabase.flush();
            fileStream.close();
            newDatabase.close();

Если вы ищете дополнительную информацию о перезаписи базы данных с вашей собственной проверкой этой ссылки (также где большая часть приведенной выше информации получена):

http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/