如何使用实际文件名从Android默认下载管理器下载文件?
我制作了一个Android应用程序,当点击歌曲列表视图时可以下载mp3歌曲。我用过这个如何使用实际文件名从Android默认下载管理器下载文件?,android,mysql,Android,Mysql,我制作了一个Android应用程序,当点击歌曲列表视图时可以下载mp3歌曲。我用过这个 request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,"MySong.mp3"); 但我的歌曲会不时从mysql数据库中更新。当我使用上述方法时,所有的歌曲都以MySong.mp3 如果我避免使用上述方法,文件将以实际文件名下载,但下载完成后会立即删除。有解决办法吗?所以。。我就是这样做的,我相信这会对你
request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,"MySong.mp3");
但我的歌曲会不时从mysql数据库中更新。当我使用上述方法时,所有的歌曲都以MySong.mp3
如果我避免使用上述方法,文件将以实际文件名下载,但下载完成后会立即删除。有解决办法吗?所以。。我就是这样做的,我相信这会对你有所帮助
//define the path of your file location.
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
+File.separator + "FOLDER_NAME" + File.separator + fileName;
//create the new file.
final File saveFile = new File(path);
//make all the directory structures needed if the location doesn't exist.
File parentDest = saveFile.getParentFile();
if (!parentDest.exists()) {
parentDest.mkdirs();
}
设置此项后,您必须确保为DownloadManager提供此文件的确切路径
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS,
File.separator + "FOLDER_NAME" + File.separator + fileName);
希望这有帮助,
JozeRi通过评论中提供的链接,我遵循了这一点,效果不错。感谢链接@commonware
String url = "www.somedownloalink.com/some-song.mp3";
String filename = url.substring(url.lastIndexOf('/') + 1);
request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,filename);
按照您所做的方式,每当您加载新歌时,它都会将其重命名为
MySong.mp3
,因为前一首歌也有相同的名称,它会覆盖它。所以你必须想出一个方法为每首歌生成一个唯一的名字。例如:您可以将id
附加到歌曲名称的末尾。确保您总是首先检查文件夹中是否已存在该名称,以便生成另一个名称。这样你就不会写歌曲了。问题不在于下载位置,先生,真正的问题在于下载的文件名。你是如何获得歌曲的?你能不能找个地方把歌曲的名字取出来,这样你就可以给它正确的名字了?每次我在数据库中更新链接和mp3文件时,链接和mp3文件都会改变。总之找到了答案。也可以这样做request.setdestinationnexternalfilesdir(这是Environment.DIRECTORY_下载的,“MySong”+System.currentTimeMillis()+“.mp3”)代码>