2014-02-20 2 views
2

Я использую DownloadManager для загрузки файла, я хотел поставить загрузку в стандартной папке загрузки, чтобы люди могли легко найти их с помощью файлового менеджера, глядя в самом очевидном месте:Android DownloadManager сохранить в папке загрузки

Uri downloadLocation = Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS, filename)); 
request.setDestinationUri(downloadLocation); 
Long reference = downloadManager.enqueue(request); 

Но я получаю исключение, потому что это не внешний диск.

Невозможно загрузить файл в папку загрузки пользователя?

Кроме того, что, если у них нет внешней памяти, просто внутренняя?

Спасибо.

ответ

9
Uri downloadLocation=Uri.fromFile(new File(Environment.DIRECTORY_DOWNLOADS, filename)); 

Это не так, как вы используете Environment.DIRECTORY_DOWNLOADS. Это постоянная для использования с getExternalStoragePublicDirectory():

File dir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 

dir.mkdirs(); 

Uri downloadLocation=Uri.fromFile(new File(dir, filename);; 

Обратите внимание, что каталог еще не может существовать, так что вы должны вызвать mkdirs() себя.

Кроме того, что, если у них нет внешней памяти, только внутренней?

Практически все устройства Android имеют внешнюю память. Внешний! = Съемный. То, что Android SDK означает «внешнее хранилище», - это то, что пользователь может получить через USB-кабель и обычно находится в том же разделе, что и «внутреннее хранилище», во встроенной флэш-памяти.

Смежные вопросы