2009-02-08 16 views
24

Ich frage mich, was ist die Absicht, URLs herunterzuladen? Im Browser wird es mit einem kleinen Benachrichtigungssymbol herunterladen. Ich habe mich gefragt, ob ich diese Absicht (und was es ist) verwenden kann.Android Download Absicht

+0

Ich habe ehrlich gesagt keine Ahnung, was Sie hier fragen, bitte klären. –

+0

Um diese alte Frage zu überdenken - es ist eine private Absicht. Sehen Sie sich den DownloadManager im AOSP an. –

+0

Haben Sie Links/Anleitungen/Quellen zum Aufruf dieses DownloadManagers? Und, da es privat ist und somit für uns nicht nutzbar ist, haben Sie eine Alternative zum Herunterladen einer Datei gefunden? – TiGer

Antwort

58

Anwendungen können Dateien wie der Browser und Gmail mit dem Download-Manager herunterladen. Dies ist ab Gingerbread verfügbar.

Ihre App benötigt die Berechtigung INTERNET, um einen Download zu initiieren. Um die Datei im Standard-Download-Verzeichnis zu speichern, benötigt sie außerdem die Berechtigung WRITE_EXTERNAL_STORAGE.

Hier ist, wie Sie eine URI zum Download:

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); 

ein paar andere Optionen für die Anpassung der Benachrichtigung Es gibt die Abfrage der Download-Zustand und Einstellung der Download-Adresse.

This blog post zeigt, wie Sie den Download-Manager auf früheren Versionen von Android über versteckte APIs verwenden können.

+0

Warum wird auf Android 4.4 immer "Download nicht erfolgreich" angezeigt? –

0

Werfen Sie einen Blick here auf alle Android Intents.

+0

Das ist gut, aber es ist niemand, der einen Download startet (vielleicht der Browser, ich werde das versuchen). Danke trotzdem. –

+0

Nein, der Browser funktioniert nicht - danke trotzdem. Ich muss es vielleicht manuell machen. –

+0

@MBober: es funktioniert für mich ... – GregD

2

Was versuchen Sie zu tun? Wenn Ihre App eine Datei herunterladen möchte, können Sie den UrlConnection-Code verwenden. Wenn Sie ein Paket herunterladen möchten, dann sollte ACTION_PACKAGE_INSTALL tun, was Sie wollen.

+0

Ich weiß, aber der Browser hat einen Download - Benachrichtigung - Dings und ich dachte, wenn es eine öffentliche Absicht war, könnte ich es stattdessen verwenden. Ich denke, ich muss es manuell machen. Danke, Isaac –

+3

Ich weiß, das ist alt, aber diese akzeptierte Antwort ist nicht die beste Antwort, und ehrlich gesagt nicht wirklich eine Antwort überhaupt für das, was gefragt wird. Stattdessen ist die höher bewertete "richtige" Antwort von Alexandre Jasmin unten. – Josh

17

Während ich nicht glaube, dass es einen Download Intent im Browser gibt, können Sie wahrscheinlich einen normalen ACTION_VIEW Intent verwenden und den Browser entscheiden lassen, ob er die URL basierend auf dem Inhaltstyp herunterladen oder anzeigen soll.

So aus dem Code-Trigger

new Intent(Intent.ACTION_VIEW, Uri.parse(url)) 

und hoffen, dass dies einen Download im Browser auslöst.

+0

Diese Downloads mit dem Browser, aber ohne Fortschrittsbalken oder Benutzerfeedback - ich bekomme nur eine Download-Benachrichtigung abgeschlossen. –