【发布时间】:2019-06-17 14:22:46
【问题描述】:
我正在尝试使用 DownloadManager 将音频文件下载到应用程序拥有的目录之一。 这是我的代码:
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_MUSIC),
audioName + ".mp3");
if (file.exists()) {
return;
} else {
DownloadManager mgr = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse(url);
DownloadManager.Request request = new DownloadManager.Request(
downloadUri);
request.setAllowedNetworkTypes(
DownloadManager.Request.NETWORK_WIFI
| DownloadManager.Request.NETWORK_MOBILE).setAllowedOverMetered(true)
.setAllowedOverRoaming(true).setVisibleInDownloadsUi(false)
.setDestinationUri(Uri.fromFile(file));
mgr.enqueue(request);
}
问题是 downloadManager 正在复制已经下载的音频,例如,如果我有一个名为“test.mp3”的音频文件,我会在我的应用程序目录中找到“test.mp3”和“test1.mp3”。
我做错了吗?
请记住,我想下载应用目录中的文件,这就是我使用 setDestinationUri
的原因【问题讨论】:
-
你在哪里填充这个“audioName”变量?你需要检查这个
-
audioName来自哪里? -
我正在使用 Volley 从服务器获取音频名称,我想要的是如果音频名称已经存在,则不会简单地下载文件。
-
请问您每次获得的价值是多少?
-
如果我尝试多次下载名为“test.mp3”的文件,我会得到“test-1.mp3”“test-2.mp3”test-3.mp3”等... .取决于我调用上面代码的次数。但是我想要的是当文件已经下载(目录中已经存在)时,它不会再次下载。我希望这足够清楚
标签: android android-file android-download-manager