I was wondering what is the intent for downloading URLs? In the browser, it will download stuff with a little notification icon. I was wondering if I can use that intent (and what it is).
-
I honestly have no idea what you are asking here, please clarify. – Chris Ballance Feb 08 '09 at 05:43
-
To revisit this old question - it is a private intent. Look at DownloadManager in the AOSP. – Isaac Waller Jul 30 '10 at 19:16
-
do you have any links/guides/source on how to call this DownloadManager ? And, beacuse it's private thus not usable for us, did you find some kind of alternative on how to download a file ? – TiGer Nov 15 '10 at 15:47
-
I have the same problem.I want to get the intent with the url and file name to download,but i don't known the intent and how to receive . – Jan 21 '11 at 00:41
4 Answers
Applications can download files with the download manager just like the browser and gmail. This is available starting with Gingerbread.
Your app needs the INTERNET permission to initiate a download. To save the file in the default Download directory it also needs the WRITE_EXTERNAL_STORAGE permission.
Here's how you can download an URI:
DownloadManager.Request r = new DownloadManager.Request(uri);
// This put the download in the same Download dir the browser uses
r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "fileName");
// When downloading music and videos they will be listed in the player
// (Seems to be available since Honeycomb only)
r.allowScanningByMediaScanner();
// Notify user when download is completed
// (Seems to be available since Honeycomb only)
r.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
// Start download
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(r);
There are a bunch of other options for customizing the notification, querying the download state and setting the download location.
This blog post shows how you could use the download manager on previous versions of Android via hidden APIs.

- 39,094
- 7
- 77
- 67
While I don't believe there is a download Intent in the browser, you can probably use a normal ACTION_VIEW
Intent and have the browser decide if it should download or view the url based on the content-type.
So from your code trigger
new Intent(Intent.ACTION_VIEW, Uri.parse(url))
and hope this triggers a download in the browser.
-
This downloads with the browser, but without any progress bar or user feedback - I only get a download completed notification. – Mike Redrobe Mar 20 '17 at 13:41
-
This solution will only work for android 10 and below. (For media file) – Aniket-Shinde Jul 19 '21 at 07:25
What are you trying to do? If your app wants to download a file you can use the UrlConnection code. If you want to download a package then ACTION_PACKAGE_INSTALL
should do what you want.
-
I know, but the browser has a download - notification - thingy and I thought if it was a public intent I could just use it instead. I guess I will have to do it manually. Thanks, Isaac – Isaac Waller Feb 08 '09 at 06:19
-
3I realize this is old, but this accepted answer is not the best answer, and honestly not really an answer at all for what is being asked. Instead, the higher rated "correct" answer is from Alexandre Jasmin below. – Josh Jul 01 '14 at 17:55
-
1That is good but there is no one that starts a download (maybe the browser one, I will try that). Thanks anyway. – Isaac Waller Feb 08 '09 at 06:00
-
No, the browser one does not work - thanks anyway. I may have to do it manually. – Isaac Waller Feb 08 '09 at 06:06