Manually add local file to the Downloads app
Asked Answered
E

2

12

My app needs to download files, I was looking into DownloadManager, however it has some limitations that don't suit my case (authentication, naming scheme, verification), so I made my custom download engine.

Is it possible to manually add a file downloaded with my engine (thus by using a local URL) to the list in the Downloads system app? My understanding is that list is populated by a system content provider. Is it possible to add records to it, without the DownloadManager trying to download the file?

Thanks ;)

Erectile answered 26/5, 2013 at 0:13 Comment(1)
Here is the answer to your question: #15437150Porfirioporgy
S
15

To manually add a file you need to use the DownloadManager class. I use the following to show a file in the Download app that I created locally.

DownloadManager downloadManager = (DownloadManager)mainActivity.getSystemService(mainActivity.DOWNLOAD_SERVICE);
downloadManager.addCompletedDownload(file.getName(), file.getName(), true, "application/json", file.getAbsolutePath(),file.length(),true);

This will make the file appear in the Downloads app on 6.0, even if the file was created locally.

Snowonthemountain answered 22/11, 2016 at 17:33 Comment(3)
The addCompletedDownload method has been deprecated in API 29.Platitude
any change on how this should be used? DownloadManager doesn't let me copy local files into Downloads. It says only http / https should be used.Bothnia
Yep, broken now. Only allows HTTP/HTTPS URIsCartierbresson
P
2

Kotlin Equivalent of the above answer:

val downloadManager =   this.getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager
downloadManager.addCompletedDownload(file.getName(), file.getName(), true, "application/json", file.getAbsolutePath(),file.length(),true)
Photodrama answered 26/9, 2018 at 6:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.