我有一个应用程序,可以下载一些音频文件,然后播放它们(使用 MediaPlayer。
我使用 DownloadManager 下载文件,如下所示:
DownloadManager downloadmanager = downloadManager = (DownloadManager) getApplication().getSystemService(Context.DOWNLOAD_SERVICE);
long id = downloadManager.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle(e.getValue().getName())
.setDescription(getString(R.string.DOWNLOAD_MANAGER_TITLE))
.setDestinationInExternalFilesDir(getApplication(),Environment.DIRECTORY_DOWNLOADS,fileName));
现在,我可以验证文件是否已下载并且可以播放。
但我需要在 File
中打开它们,然后将该文件传递给 MediaPlayer。
我这样做:
Uri fileUri = dlMgr.getUriForDownloadedFile(id);
File mAudioFile =new File(fileUri.getPath());
if(mAudioFile.exists(){
mediaPlayer.setDataSource(mAudioFile.getAbsolutePath());
}else
{
//the file does not exist <-- this is where i end
}
我使用 uid 将下载 ID 存储在 SharedPreferences 中,并使用 downloadmanager 来删除文件 downloadmanager.remove(id)
这工作正常,并且删除了正确的文件。
我做错了什么?
谢谢
最佳答案
无需从 getUriForDownloadedFile
返回的 Uri
获取文件路径,只需使用 Uri
作为 MediaPlayer
的数据源:
if(fileUri!=null){
mediaPlayer.setDataSource(fileUri);
}else{
// fileUri is null
}
关于java - 找不到 DownloadManager 下载的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46583457/