2009-02-08 25 views
24

Zastanawiam się, jaki jest zamiar pobierania adresów URL? W przeglądarce pobierze rzeczy z małą ikoną powiadomienia. Zastanawiałem się, czy mogę użyć tego zamiaru (i co to jest).Android Pobierz Intent

+0

Szczerze nie mam pojęcia, o co prosisz, wyjaśnij. –

+0

Wracając do tego starego pytania - jest to intencja prywatna. Spójrz na DownloadManager w AOSP. –

+0

czy masz jakieś linki/przewodniki/źródło jak się z nim połączyć? I czy to jest prywatne, a więc nieużyteczne dla nas, czy znalazłeś jakąś alternatywę, jak pobrać plik? – TiGer

Odpowiedz

58

Aplikacje mogą pobierać pliki za pomocą menedżera pobierania tak samo, jak przeglądarki i Gmaila. Jest to dostępne począwszy od Gingerbread.

Twoja aplikacja wymaga zezwolenia na zainicjowanie pobierania przez użytkownika INTERNET. Aby zapisać plik w domyślnym katalogu pobierania, potrzebuje również uprawnienia WRITE_EXTERNAL_STORAGE.

Oto jak można pobrać 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); 

Istnieje kilka innych opcji dostosowywania powiadomienie, odpytywanie stanu pobierania i ustawiania położenia pobierania.

This blog post pokazuje, jak można użyć menedżera pobierania w poprzednich wersjach Androida za pomocą ukrytych interfejsów API.

+0

Dlaczego zawsze wyświetla się komunikat "Pobieranie nie powiodło się" na Androidzie 4.4? –

0

Spójrz na here we wszystkich intencjach Androida.

+0

To dobrze, ale nie ma nikogo, kto rozpocznie pobieranie (może to przeglądarka, spróbuję tego). Dzięki i tak. –

+0

Nie, przeglądarka nie działa - dzięki to. Być może będę musiał to zrobić ręcznie. –

+0

@MBober: to działa dla mnie ... – GregD

2

Co próbujesz zrobić? Jeśli aplikacja chce pobrać plik, możesz użyć kodu UrlConnection. Jeśli chcesz pobrać pakiet, wtedy ACTION_PACKAGE_INSTALL powinien zrobić to, co chcesz.

+0

Wiem, ale przeglądarka ma pobieranie - powiadomienie - thingy i pomyślałem, że gdyby to była publiczna intencja, mógłbym go zamiast tego użyć. Chyba będę musiał to zrobić ręcznie. Dzięki, Isaac –

+3

Rozumiem, że to jest stare, ale ta zaakceptowana odpowiedź nie jest najlepszą odpowiedzią, a szczerze mówiąc nie jest to odpowiedź na to, o co się pyta. Zamiast tego wyżej oceniona "poprawna" odpowiedź pochodzi od Alexandre Jasmin poniżej. – Josh

17

Chociaż nie sądzę, że w przeglądarce istnieje zamiar pobrania, prawdopodobnie można użyć normalnego intencji ACTION_VIEW i przeglądarka powinna zdecydować, czy ma pobrać lub wyświetlić adres URL na podstawie typu zawartości.

Więc z kodu spuście

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

i nadzieję, że to wyzwala pobierania w przeglądarce.

+0

To pobieranie odbywa się za pomocą przeglądarki, ale bez żadnego paska postępu ani informacji zwrotnej od użytkownika - otrzymuję tylko powiadomienie o zakończeniu pobierania. –

Powiązane problemy