2016-05-30 2 views
1

Я новичок в использовании downloadmanager в android. Я использую эмулятор genymotion.android: downloadmanager где хранятся файлы

Я пытаюсь загрузить mp3-файл, используя downloadmanager. Я хочу знать, где файл сохраняется после загрузки.

Environment.getExternalStorageDirectory() 

это показывает/хранение/эмулируется/0. его общий "внешний накопитель"

Я также проверил

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 

он указывает на /storage/emulated/0/Download. В mp3-файле нет.

Я также проверил /storage/emulated/0/Android/data/com.simha.sacredindaapp. Mp3-файлов нет.

Мой код для загрузки файла mp3 является:

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

ответ

1

вам необходимо установить директорию назначения.

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

Это означает, что если мы не установить каталог назначения, мы не знаем, где его загрузки. –

1

Как уже упоминалось Лиор Shitrit, вам необходимо установить директорию назначения, используя: requet.setDestinationInExternalPublicDir(...);.

Для загрузки файла с uri вам необходимо зарегистрироваться BroadcastReceiverDownloadManager.ACTION_DOWNLOAD_COMPLETE action. Далее, в onReceive, если действие равно DownloadManager.ACTION_DOWNLOAD_COMPLETE вы можете получить уникальный идентификатор скачать и использовать его для запроса статуса и локального URI:

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(); 
} 
Смежные вопросы