【问题标题】:How to download files from Android default download manager with actual file name?如何从具有实际文件名的 Android 默认下载管理器下载文件?
【发布时间】:2015-03-23 13:23:02
【问题描述】:

我制作了一个 Android 应用程序,当单击歌曲的 ListView 时可以下载 mp3 歌曲。我用过这个

request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,"MySong.mp3");

但是我的歌曲会时不时地从 mysql 数据库中更新。当我使用上述方法时,所有歌曲都以MySong.mp3

的文件名下载

如果我避免使用上述方法,文件会以实际文件名下载,但下载完成后会立即删除。有解决办法吗?

【问题讨论】:

  • 按照您的方式,每当您下载新歌曲时,它会将其重命名为MySong.mp3,并且由于之前的歌曲名称也相同,它将覆盖它。所以你必须想出一种方法来为每首歌生成一个唯一的名字。例如:您可以将id 附加到歌曲名称的末尾。确保您始终首先检查该名称是否已存在于文件夹中,以便生成另一个名称。这样你就可以避免覆盖歌曲

标签: android mysql


【解决方案1】:

所以..这就是我的做法,我相信这应该对你有所帮助。

//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);

希望这会有所帮助, 乔泽里

【讨论】:

  • 问题不在于下载位置先生,实际问题在于正在下载的文件名
  • 你是怎么得到这首歌的?您不能在某处获取歌曲名称以便给它正确的名称吗?
  • 每次我在数据库中更新链接和 mp3 文件时,它们都会发生变化。总之找到了答案。
【解决方案2】:

通过评论中提供的链接,我遵循了这个并且它有效。感谢@CommonsWare 的链接

String url = "www.somedownloalink.com/some-song.mp3";

String filename = url.substring(url.lastIndexOf('/') + 1);

        request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,filename);

【讨论】:

  • 也可以这样request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS,"MySong"+System.currentTimeMillis()+".mp3");
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
相关资源
最近更新 更多