2014-10-02 8 views
0

Я столкнулся с этой проблемой пару дней, и я не могу понять это. Итак, у меня есть приложение, которое хочет создать папку в корневом каталоге (не во внутреннем каталоге приложения, а во внутреннем каталоге устройства), поэтому я видел, что это фактически внешний каталог. Теперь я использую такой код:Невозможно создать папку в Android

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

и на некоторых устройствах это не работает. created всегда ложны. Я не знаю, на каких устройствах, потому что я знаю это из Crashlytics (могу сказать только на устройствах Samsung и Lenovo). На My Nexus 7 и Xperia Sola он работает отлично.

Может кто-нибудь помочь мне в этом вопросе?

ответ

0

замените file.mkdir() на (file.mkdir() || file.isDirectory()).

Ваши потребности вызов getExternalStorageDirectory быть getExternalStorageDirectory() и проверить состояние внешнего хранения первого, используя getExternalStorageState() (== Environment.MEDIA_MOUNTED) и войти в состояние возвращаемого что; Не пытайтесь создать каталог на доступном для чтения или недоступном носителе.

+0

извините мою ошибку - это должно быть 'getExternalStorageDirectory()' - я редактировал свой пост. Да, но как он может быть доступен только для чтения, если у вас есть другие папки? как DCIM, где у вас есть ваши фотографии, Download - где у вас есть загруженные вами файлы? У многих приложений есть собственная папка в этой внутренней папке устройства (например, на Nexus 7 это/emulated/0 /). –

+0

Вы проверили, тот же каталог уже существует? [mkdir может вернуть false в этом случае] (http://developer.android.com/reference/java/io/File.html#mkdir()). – ashoke

+0

Да, 'getExternalStorageDirectory()' dir существует. Это также происходит на эмуляторе - 'mkdir()' или 'mkdirs()' возвращает 'false'. –

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