Android DownloadManager 如何在完成下载前将文件标记为临时文件

Android DownloadManager how to mark file as temporary before finishing downloading

我有一个DownloadManager可以下载视频,这样我就可以用播放器播放了。但是我开始下载的时候,生成了未完成的.mp4文件,所以我在下载完成前播放时会报错,请问可以在下载完成前更改扩展名吗?

DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);    
Uri uri = Uri.parse(url);    
DownloadManager.Request request = new DownloadManager.Request(uri);    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI|DownloadManager.Request.NETWORK_MOBILE).setDescription("caching video").setDestinationInExternalPublicDir("/Android/data/", id + ".mp4");
long id = manager.enqueue(request);

您可以用稍微不同的方式解决您的问题
您需要使用更改后的扩展名开始下载,而不是 change its extension before finish downloading

request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI|DownloadManager.Request.NETWORK_MOBILE).setDescription("caching video").setDestinationInExternalPublicDir("/Android/data/", id + ".mp4.tmp");

下载完成后,将文件重命名为 "/Android/data/", id + ".mp4"