我试图通过DownloadManager下载文件,它在大多数手机(Nexus系列,S3等)上都能完美工作,但在Galaxy S2上由于某种原因下载工作正常,但文件的名称设置错误,当我试图打开它(无论是从通知,下载应用程序)时,它说该文件无法打开,即使是像jpeg,gif,png等文件。
代码如下:
DownloadManager downloadManager = (DownloadManager) service
.getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request downloadReq = new DownloadManager.Request(
Uri.parse(URL));
downloadReq
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI
| DownloadManager.Request.NETWORK_MOBILE);
downloadReq.allowScanningByMediaScanner();
downloadReq.setMimeType(attachment.mimeType);
downloadReq.setTitle(attachment.fileName);
downloadReq.setDescription("attachment");
downloadReq.setDestinationInExternalFilesDir(service,
Environment.DIRECTORY_DOWNLOADS, "");
downloadReq
.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE
| DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
downloadIDs.add(downloadManager.enqueue(downloadReq));
还请注意,所有的网址是https,和手机的android版本是4.1.2任何想法?
非常感谢!
更新:如果我在这个呼叫中加入文件名称:
downloadReq.setDestinationInExternalFilesDir(service,
Environment.DIRECTORY_DOWNLOADS, attachment.fileName);
该好名字将显示在通知中心。
1条答案
按热度按时间ne5o7dgx1#
您应该注册自己,以便在文件下载完成时接收广播。在那里您还可以获取文件名。这需要对代码进行一些修改:
保留从入队调用返回的ID:
注册接收器以获取广播:
声明接收方:
假设下载文件名并不是一个好的做法。如果你再次下载它而不删除前一个文件名,它会自动获得一个后缀。