При запуске приложения для Android мне нужно создать каталог на SD-карте, для небольшого числа пользователей это не удается, и я не могу понять, причина этого ...mkdirs возвращает false для каталога на SD-карте, в то время как родительский каталог доступен для записи
(я нашел подобные проблемы, связанные с разрешением WRITE_EXTERNAL_STORAGE отсутствует, это там, и это работает для почти всех пользователей, так что я не думаю, что это причина)
Я упростил предыдущую ситуацию, чтобы упростить объяснение, если сбой при создании строки не выполняется, я запускаю тестовый пример, где я пытаюсь создать каталог .test на SD-карте:
new File(Environment.getExternalStorageDirectory(), ".test").mkdir() -> false
new File(Environment.getExternalStorageDirectory(), ".test").mkdirs() -> false
Свойства файла соответствующих каталогов:
/sdcard/.test (существует = ложь canWrite = ложь CanRead = ложь CanExecute = эээ isDirectory = ложь ISFILE = ложь)
/SDCard (существует = истина canWrite = TRUE CanRead = TRUE CanExecute = ERR isDirectory = TRUE ISFILE = ложь)
/(существует = истина canWrite = FALSE CanRead = TRUE CanExecute = ERR isDirectory = TRUE ISFILE = ложь)
getExternalStorageState = установлен
(CanExecute возвращает заблуждаются, потому что тест выполняется на < 9 SDK)
Предложения и идеи приветствуются ...
Не могли бы вы показать код, где вы пытаетесь создать каталог? Например, если у вас есть жесткая '/ sdcard', это может быть ваша проблема прямо там. – CommonsWare
@CommonsWare: Я использую Environment.getExternalStorageDirectory() и думая о переключении на Context.getExternalFilesDir (null), как только я понял эту проблему ... Я отредактирую свое оригинальное сообщение с кодом .. Thansk для быстрого ответа ! – Danny
Имейте в виду, что 'getExternalFilesDir()' существует только для Android 2.2 и не работает в этой версии. Я буду придерживаться вашей текущей стратегии в обозримом будущем. – CommonsWare