it-roy-ru.com

DownloadManager не хранит загруженные файлы в папке загрузки

Всякий раз, когда я пытаюсь скачать любой файл с помощью кода ниже

dm = (DownloadManager) context.getSystemService(context.DOWNLOAD_SERVICE);
request = new Request(
    Uri.parse(finalurl));
enqueue = dm.enqueue(request);

BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
                long downloadId = intent.getLongExtra(
                        DownloadManager.EXTRA_DOWNLOAD_ID, 0);
                Query query = new Query();
                query.setFilterById(enqueue);
                Cursor c = dm.query(query);
                if (c.moveToFirst()) {
                    int columnIndex = c
                            .getColumnIndex(DownloadManager.COLUMN_STATUS);
                    if (DownloadManager.STATUS_SUCCESSFUL == c
                            .getInt(columnIndex)) {

                        Toast.makeText(context, "download finished", Toast.LENGTH_LONG).show();
                    }
                }
            }
        }
    };

    context.registerReceiver(receiver, new IntentFilter(
            DownloadManager.ACTION_DOWNLOAD_COMPLETE));

Загруженный файл отображается в приложении Download Manager и может быть воспроизведен оттуда в любое время, но он не сохраняет загруженный файл в папке "Загрузки".

Если я использую

.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "filename.extention"));

я получаю тот же результат.

Мой вопрос: куда идут мои загрузки и как их перенести в папку загрузок?

4
architjn

Для просмотра загруженных файлов на вашем телефоне должно быть установлено приложение File Manager. Шаги для просмотра загруженных файлов:

  1. Откройте приложение "Диспетчер файлов".
  2. Перейти в хранилище -> SDCard
  3. Перейдите к Android -> data -> "Имя вашего пакета", например. com.xyx.abc
  4. Здесь все ваши загрузки.

Путь: хранилище/SDCard/Android/данные/"ваш пакет"

Используйте следующие методы для сохранения файлов в папке загрузки

.setDestinationInExternalFilesDir(this, dir, "abc.png");
2
Nitesh Khatri

Пытаться

request.setDestinationInExternalPublicDir("/folder","file.ext");

Это сохранит файл в

Environment.getExternalStorageDirectory() + "/folder"
9
Fatih Ergin

Если вы попытаетесь найти, где DownloadManager хранит файл, используя

String file = <Cursor>.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)

вы получаете вымышленный путь: "context: // downloads/my_downloads/{number}". Чтобы увидеть фактический путь, используйте:

String file = <Cursor>.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME)

Затем вы получаете: "/data/user/0/com.Android.providers.downloads/cache/ enjfilename}" (или что-то подобное), и вы можете получить доступ к файлу оттуда.

1
Apostolos

Шаги, чтобы найти ваши загрузки и экспортировать их в локальные папки. Диспетчер загрузки -> вверху справа есть кнопка меню -> файлы -> пометить пункт (ы) -> экспорт.

Надеюсь, это помогло :)

0
Maisterino