2014-11-27 18 views
5

Đây là mã của tôiTại sao tôi không thể tạo thư mục bên trong Environment.DIRECTORY_PICTURES?

File selfieLocation = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES), 
       "Daily Selfies"); 
boolean isDirectory = false; 
if(!selfieLocation.isDirectory()) { 
     //Creates directory named by this file 
     selfieLocation.mkdir(); 
     isDirectory = selfieLocation.isDirectory(); 
} 
//array of strings 
for(String selfiePath: selfieLocation.list()) { 
     selfies.add(selfiePath); 
} 

Về cơ bản những gì tôi đang cố gắng làm là tạo thư mục tùy biến của riêng tôi bên trong của thư mục tiêu chuẩn, trong đó để đặt hình ảnh có sẵn cho người dùng.

Tôi đã xem các chủ đề liên quan và thấy chủ đề này, Android: unable to create a directory in default pictures folder. Tuy nhiên, tôi chắc chắn rằng tôi đã có một cuộc gọi để getExternal ...., và không chỉ có Environment.DIRECTORY_PICTURES như một tham số. Tôi cũng đã xem tại đây http://developer.android.com/guide/topics/data/data-storage.html#filesExternal và thấy rằng tôi đã có phương thức/định dạng đúng để tạo thư mục có thể tùy chỉnh trong bộ nhớ ngoài. Ví dụ về tài liệu là

File file = new File(Environment.getExternalStoragePublicDirectory(
     Environment.DIRECTORY_PICTURES), albumName); 
if (!file.mkdirs()) { 
    Log.e(LOG_TAG, "Directory not created"); 
} 

Tôi bước qua mã của tôi và thấy rằng biến cục bộ làDirectory giữ nguyên ngay cả sau khi gọi đến selfieLocation.mkdir(). Có ai biết tại sao thư mục này không thể được tạo ra?

Trả lời

4

Cố gắng tạo thư mục với File#mkdirs(), chứ không phải File#mkdir(). Sau này giả định rằng tất cả các thư mục cha đã có sẵn, do đó, nó sẽ không tạo thư mục nếu bất kỳ cha mẹ của nó không tồn tại.
Ngoài ra, hãy xem các quyền của bạn trong AndroidManifest.xml. Bạn cần các điều khoản sau đây để đọc/ghi nội dung trên bộ nhớ ngoài:

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

android.permission.READ_EXTERNAL_STORAGE không được yêu cầu cho bây giờ, nhưng it will be trong phiên bản tương lai của Android.

+0

quyền không phải là vấn đề vì tôi có điều đó và không nhận được ngoại lệ bảo mật. mkdirs cũng không hoạt động. Phụ huynh không tồn tại trong trường hợp này (getExternalFilesDir (Environment.DIRECTORY_PICTURES) – committedandroider

+0

Nhân tiện, bạn có thể đưa ra câu hỏi này nếu bạn cho rằng đó là một câu hỏi hay? Tôi đang gặp nguy hiểm về lệnh cấm vì vậy tôi cố gắng đảm bảo rằng – committedandroider

+0

Tôi đã cố gắng tái tạo lỗi của bạn và mọi thứ hoạt động tốt trên trình giả lập. Vấn đề phải ở một nơi khác. Đối với tôi, đó là một câu hỏi hay, với nỗ lực nghiên cứu, nhưng nó không liên quan theo quan điểm của tôi, – aga

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