我需要下载图片的内容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;
}
答案 0 :(得分:0)
我需要下载图片的内容uri
由于您使用的是setDestinationInExternalPublicDir("",imgName);
,我希望您的代码会崩溃,因为""
不是setDestinationInExternalPublicDir()
的有效值。
所以,让我们假装您正在使用:
setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,imgName);
在这种情况下,您的文件位于:
new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), imgName);
如果您确实需要content
Uri
,请使用FileProvider
自行投放该文件。