如何使用DownloadManager类获取刚刚下载的文件的Uri?

时间:2017-04-25 17:37:33

标签: java android

我需要下载图片的内容uri。我得到了下载的ID,但我无法使用getUriForDownloadedFile()函数获得任何类型的uri。

String imgName = "WallPics" + System.currentTimeMillis() + ".jpg";
                DownloadManager.Request download = downloadImage(imgName);
                DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
                long downloadId = manager.enqueue(download);
                Uri cUri=manager.getUriForDownloadedFile(downloadId);
                Log.e(TAG, "onClick: "+downloadId );
                Log.i(TAG, "onClick: "+cUri);

downloadImage函数定义为:

private DownloadManager.Request downloadImage(String imgName)
{
    DownloadManager.Request download=new DownloadManager.Request(imageUri);
    download.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE| 
DownloadManager.Request.NETWORK_WIFI);
    download.setAllowedOverRoaming(true);
    download.setDestinationInExternalPublicDir("",imgName);
    return download;
    }

1 个答案:

答案 0 :(得分:0)

  

我需要下载图片的内容uri

由于您使用的是setDestinationInExternalPublicDir("",imgName);,我希望您的代码会崩溃,因为""不是setDestinationInExternalPublicDir()的有效值。

所以,让我们假装您正在使用:

setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,imgName);

在这种情况下,您的文件位于:

new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), imgName);

如果您确实需要content Uri,请使用FileProvider自行投放该文件。