2016-05-30 2 views
1

ich bin neu zu verwenden downloadmanager in android. Ich benutze den Genymotion-Emulator.android: downloadmanager wo sind die dateien gespeichert

Ich versuche eine MP3 Datei mit downloadmanager zu laden. Ich möchte wissen, wo die Datei nach dem Download gespeichert wird.

Environment.getExternalStorageDirectory() 

Es zeigt/Speicher/emuliert/0. sein der gemeinsame "externer Speicher"

Ich habe auch

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 

es /storage/emulated/0/Download verweist. Die mp3-Datei ist nicht da.

Ich habe auch /storage/emulated/0/Android/data/com.simha.sacredindaapp überprüft. Die mp3-Datei ist nicht da.

Mein Code, um die MP3-Datei zum Herunterladen ist:

DownloadManager downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE); 
Uri uri = Uri.parse("http://audio.iskcondesiretree.com/02_-_ISKCON_Swamis/ISKCON_Swamis_-_R_to_Y/His_Holiness_Radhanath_Swami/Lectures/00_-_Year_wise/Devotional_Nectar_-_2016/2016-01-31_Various_-_Vrindavan_is_Perceived_by_Our_Consciousness-For_Ukraine_Devotees_-_Radhanath_Swami.mp3"); 
DownloadManager.Request request = new DownloadManager.Request(uri); 
request.setDescription("My Download").setTitle("Notification titile"); 
downloadManager.enqueue(request); 

Antwort

1

Sie ein Zielverzeichnis einstellen müssen.

DownloadManager downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE); 
Uri uri = Uri.parse("http://audio.iskcondesiretree.com/02_-_ISKCON_Swamis/ISKCON_Swamis_-_R_to_Y/His_Holiness_Radhanath_Swami/Lectures/00_-_Year_wise/Devotional_Nectar_-_2016/2016-01-31_Various_-_Vrindavan_is_Perceived_by_Our_Consciousness-For_Ukraine_Devotees_-_Radhanath_Swami.mp3"); 
DownloadManager.Request request = new DownloadManager.Request(uri); 
request.setDescription("My Download").setTitle("Notification titile"); 

// change the name file and your current activity. 
request.setDestinationInExternalPublicDir(MainActivity.this, Environment.DIRECTORY_DOWNLOADS, "test.jpg"); 

downloadManager.enqueue(request); 
+0

Das heißt, wenn wir das Zielverzeichnis festgelegt nicht, wir wissen nicht, wo seine heruntergeladen werden. –

1

Als Lior Shitrit erwähnt, müssen Sie Zielverzeichnis festgelegt werden: requet.setDestinationInExternalPublicDir(...);.

Um heruntergeladene Datei URI zu erhalten, müssen Sie BroadcastReceiver mit DownloadManager.ACTION_DOWNLOAD_COMPLETE Aktion registrieren. Als nächstes wird in onReceive wenn Aktion gleich DownloadManager.ACTION_DOWNLOAD_COMPLETE Sie einzigartige Download-ID erhalten können und es abfragen für Status und lokale uri mit:

String action = intent.getAction(); 
if (action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE)) { 
    long downloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0); 
    Cursor cursor = downloadManager.query(new DownloadManager.Query().setFilterById(downloadId)); 
    if (cursor.moveToFirst()) { 
     int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)); 
     String uriString = cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)); 
     ... 
    } 

    cursor.close(); 
}