2014-10-02 7 views
0

나는이 문제에 며칠 동안 직면하고 있습니다. 알아낼 수 없습니다. 그래서, 나는 내부 디렉토리의 루트 (애플 리케이션 내부 디렉토리가 아니라 장치 내부 디렉토리)에 폴더를 만들려는 응용 프로그램을 가지고 있으므로 사실 그것이 외부 디렉토리라는 것을 알았습니다.Android에 폴더를 만들 수 없습니다.

File file = new File(getExternalStorageDirectory().getAbsolutePath(), 'someFolder); boolean created = file.mkdir();

및 일부 장치에이 작동하지 않습니다 지금은 그 같은 코드를 사용하고 있습니다. created은 항상 false입니다. Crashlytics (삼성과 Lenovo 기기에서만 말할 수 있음)에서 알 수 있기 때문에 어떤 기기인지 모르겠습니다. 내 Nexus 7 및 Xperia Sola에서 완벽하게 작동합니다.

누군가가이 문제를 해결할 수 있습니까?

답변

0

file.mkdir()(file.mkdir() || file.isDirectory())으로 바꿉니다.

내 통화 getExternalStorageDirectory 요구 getExternalStorageDirectory() 하고 getExternalStorageState() (== Environment.MEDIA_MOUNTED)를 사용하여, 제 1의 외부 저장 장치의 상태를 확인하고 그 반환 상태를 기록하는 단계; 읽기 전용 또는 사용할 수없는 저장 매체에 디렉토리를 만들지 마십시오.

+0

죄송합니다. 내 실수는 - getExternalStorageDirectory()입니다. - 내 게시물을 편집했습니다. 다른 폴더가 있으면 읽기 전용 일 수 있습니다. 사진이있는 DCIM과 같이 다운로드 - 다운로드 한 파일은 어디 있습니까? 많은 앱은이 내부 기기 폴더에 자체 폴더가 있습니다 (예 : Nexus 7에서는/에뮬레이션/0 /). –

+0

동일한 dir이 이미 있는지 확인 했습니까? [mkdir은이 경우 false를 반환 할 수 있습니다.] (http://developer.android.com/reference/java/io/File.html#mkdir()). – ashoke

+0

예,'getExternalStorageDirectory()'디렉토리가 존재합니다. 그것은 또한 에뮬레이터에서 발생합니다 -'mkdir()'또는'mkdirs()'는'false'를 반환합니다. –

관련 문제