2013-06-14 21 views
8

Tôi đang tạo ứng dụng android đang sử dụng DownloadManager. Tôi muốn tải tệp xuống thư mục mà tôi đã tạo. Nhưng các nguồn này không hoạt động. Và xảy ra IllegalstateException. Tôi có thể làm gì ??Android DownloadManager exceptionstateexception không thể tạo thư mục

urlToDownload = Uri.parse(URL); 
List<String> pathSegments = urlToDownload.getPathSegments(); 
request = new DownloadManager.Request(urlToDownload); 
request.setTitle(Titlename); 
request.setDescription("MCPE STORE"); 
request.setDestinationInExternalPublicDir(
        Environment.getExternalStorageDirectory().getAbsolutePath() + 
        "/MCPE STORE", pathSegments.get(pathSegments.size()-1)); 

Environment.getExternalStoragePublicDirectory(
        Environment.getExternalStorageDirectory().getAbsolutePath() + 
        "/MCPE STORE").mkdir(); 
latestId = downloadManager.enqueue(request); 

Trả lời

10

Tôi có thể làm gì?

Nếu bạn đọc the documentation for setDestinationInExternalPublicDir(), bạn sẽ thấy thông số đầu tiên là "loại thư mục to pass to getExternalStoragePublicDirectory(String)". Điều đó cần phải là một trong các hằng số được xác định trên lớp Environment, như Environment.DIRECTORY_DOWNLOADS. Bạn đang truyền cái gì khác, không được hỗ trợ.

+4

Tôi nên làm gì nếu tôi muốn tải xuống tệp trong thư mục đặc biệt của ứng dụng? Chỉ cần tải về tập tin trong một thư mục liên tục được xác định bởi lớp môi trường và sau đó cắt/dán tập tin? bất kỳ ý tưởng? –

+0

@AliBehzadianNejad nếu tôi nhận được đúng, tôi đã làm như sau: request.setDestinationInExternalPublicDir (Environment.DIRECTORY_DOWNLOADS, File.separator + folderName + File.separator + filename); –

5

Đảm bảo bạn có

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

trong bạn manifest.xml

Ngoài ra nếu bạn đang sử dụng một mô phỏng, hãy chắc chắn bạn đã tạo nó với lưu trữ thẻ SD. Nó không được tạo ra theo mặc định.

Các vấn đề liên quan