2016-05-30 62 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(); 
} 
相关问题