2016-05-30 23 views
1

我是在android中使用downloadmanager的新手。我正在使用genymotion模擬器。android:downloadmanager其中是存儲的文件

我正在嘗試使用downloadmanager下載mp3文件。我想知道下載後文件的存儲位置。

Environment.getExternalStorageDirectory() 

它顯示/ storage/emulated/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

正如Lior Shitrit所提到的,您需要使用以下設置目標目錄:requet.setDestinationInExternalPublicDir(...);

要獲取下載的文件uri,您需要註冊BroadcastReceiverDownloadManager.ACTION_DOWNLOAD_COMPLETE操作。接下來,在onReceive如果行動等於DownloadManager.ACTION_DOWNLOAD_COMPLETE你可以得到獨特的下載ID並用它查詢狀態和本地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(); 
} 
相關問題