У меня
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
в моем файле манифеста, однако я не могу создать каталог
Log.d(LOG_STRING, android.os.Environment.getExternalStorageState() );
java.io.File folder = new java.io.File(Environment.getExternalStorageDirectory() + java.io.File.separator + "test");
boolean success = true;
if (!folder.exists()) {
success = folder.mkdir();
}
if (success) {
Log.d(LOG_STRING, "Created directory");
} else {
Log.d(LOG_STRING, "FAILED WHILE CREATING DIRECTORY");
}
Состояние внешнего хранилища "смонтировано", но каталог test
не может быть создан, а выход - "FAILED WHILE CREATING DIRECTORY"
.
Просмотр в телефоне "Сведения о приложении" означает, что разрешение "изменить или удалить содержимое вашего USB-накопителя" отмечено для моего приложения.
Что может быть причиной этого? Некоторые специальные настройки телефона? Это Samsung GT-I9506 с Android 4.3 (API18). Следует отметить, что getExternalStorageDirectory
находится не на SD-карте, а на внутренней памяти (/storage/emulated/0/
).
<ч/" > Update:
Говоря с коллегами, кажется, что это устройство подверглось нескольким настройкам после того, как они были внедрены (чтобы конкретное приложение могло напрямую писать на SD-карту). Вероятно, не стоит исследовать дальше, я просто переключусь на другое устройство. Я буду держать устройство на некоторое время, и если кто-нибудь появится с ответом, я быстро проверю, разрешит ли он проблему.
<ч/" > Обновление 2: (конец Bounty)
Проблема остается нерешенной, но, как было сказано ранее, скорее всего, это очень специфично для этого устройства. Невозможно писать на любом пути, будь то внешнее или внутреннее хранилище, даже не в пути, возвращаемом getExternalCacheDir()
.