Необходимо создать папку в корне SD карты. Android API 21+.
В манифесте прописано:
Код:
private boolean isExistDir() {
File dir = new File(Environment.getExternalStorageDirectory().getPath()
+ File.separator + "myDir");
if (dir.exists())
return true;
if (dir.mkdirs())
return true;
return false;
}
Проверка на наличие SD (Возвращает true):
public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
Но при вызове mkdirs() получаю false. Папка не создается. Как создать папку?
Ответ
Нашел решение совершенно случайно.
Почему не догадался до этого сразу:
Причина 1: Нагуглил штук 5-10 похожих вопросов, везде советовали указывать только "WRITE_EXTERNAL_STORAG".
Причина 2: Я искренне думал, что права на запись подразумевают права на чтение. Т.е. если разрешено только READ, то WRITE запрещено. Но! Если разрешено WRITE, то и READ пожалуйста.
Остается вопрос, почему не работало без "READ_EXTERNAL_STORAGE". Но думаю что это особенность API 21+.
Комментариев нет:
Отправить комментарий