2014-11-27 2 views
5

이 내 코드 기본적으로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); 
} 

내가 뭘하려고 오전 사용자가 사용할 수있는 사진을 배치 할 표준 디렉토리 안에 내 자신의 사용자 정의 디렉토리를 생성입니다.

관련 스레드를보고이 스레드를 보았습니다 (Android: unable to create a directory in default pictures folder). 그러나 getExternal ....에 대한 호출이 있었고 Environment.DIRECTORY_PICTURES가 매개 변수가 아닌 것입니다. 나는 또한 http://developer.android.com/guide/topics/data/data-storage.html#filesExternal을 보았고 외부 메모리에 사용자 정의 폴더를 생성하는 올바른 메소드 호출/형식을 가지고 있음을 확인했습니다. 워드 프로세서 예제는 내 코드를 강화하고, 지역 변수 isDirectory도 selfieLocation.mkdir에 대한 호출 후 거짓에 머물렀던 것을보고

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

했다(). 누구든지이 디렉토리를 만들 수없는 이유를 알고 있습니까?

답변

4

File#mkdirs()이 아닌 File#mkdir()으로 디렉터리를 만들어보십시오. 후자는 모든 상위 디렉토리가 이미 존재한다고 가정하므로 부모 중 하나가 존재하지 않으면 디렉토리를 생성하지 않습니다.
또한 사용자의 허가를 AndroidManifest.xml에서 살펴보십시오. 당신은 외부 저장 장치의 내용을 읽기/쓰기하기 위해 다음과 같은 권한이 필요합니다

<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는 지금은 필요하지만 안드로이드의 향후 릴리스에서 it will be되지 않습니다.

+0

내가 권한이있어 보안 예외가 없으므로 권한이 문제가되지 않습니다. mkdirs도 작동하지 않았습니다. 부모는이 경우에 존재합니다 (getExternalFilesDir (Environment.DIRECTORY_PICTURES) – committedandroider

+0

) 그런데 좋은 질문이라고 생각하면이 질문에 답해 줄 수 있습니까? 나는 질문 금지령의 위험에 처해 있습니다. 지금부터 좋은 질문을하겠습니다. – committedandroider

+0

오류를 재현하려고 시도했지만 모든 것이 에뮬레이터에서 올바르게 작동합니다. 문제가 다른 곳에서 발생했습니다. 흥미로운 질문을 볼 때마다 upvote를 제공합니다. 그게 좋은 질문인데, 연구 노력으로, 내 견해와 관련이 없다. – aga

관련 문제