Как получить URI файла, который я скачал с помощью менеджера загрузок? - PullRequest
0 голосов
/ 30 октября 2018

Я использую менеджер загрузок для загрузки файла .ogg. Я использую этот код для загрузки:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
            request.setDescription(list.get(position).getName());
            request.setTitle(list.get(position).getName());
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                request.allowScanningByMediaScanner();
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
            }
            request.setDestinationInExternalFilesDir(context, Environment.DIRECTORY_DOWNLOADS, list.get(position).getName() + ".ogg");

            DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
            manager.enqueue(request);

Теперь я хочу поделиться этим файлом, поэтому мне нужен его URI.

Как я могу получить этот файл URI?

1 Ответ

0 голосов
/ 30 октября 2018

Метод DownloadManager.enqueue() возвращает идентификатор ( DOC IS HERE ). Таким образом, вы должны «сохранить» этот идентификатор для будущих операций (например, обратитесь к Uri загруженного файла).

Таким образом, вы можете использовать этот Id для получения Uri, если файл был успешно загружен с использованием Uri getUriForDownloadedFile(long id); ( DOC HERE )

EDIT

Если вы создали BroadcastReceiver для получения трансляций о завершенной загрузке, вы можете получить Uri, как только ваш файл будет загружен:

private int mFileDownloadedId = -1;

// Requesting the download
DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
mFileDownloadedId = manager.enqueue(request);

// Later, when you receive the broadcast about download completed.
private BroadcastReceiver onDownloadComplete = new BroadcastReceiver() {
   @Override
   public void onReceive(Context context, Intent intent) {
       long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
       if (downloadedID == mFileDownloadedId) {
           // File received
           DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
           Uri uri = manager.getUriForDownloadedFile(mFileDownloadedId);
       }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...