открыть не удалось: EACCES (В доступе отказано)

У меня очень странная проблема с доступом к хранилищу на некоторых устройствах. Приложение работает на моих тестовых устройствах (Nexus 4 & 7, Samsung GS5). Все мои устройства под управлением Android 4.4.2. Но я получил много писем от пользователей, в которых говорилось, что приложение не может записывать в хранилище (ни во внутреннюю память, ни на sd-карту). Из файла журнала, полученного из отзывов пользователей, я вижу проблему в следующем коде:

try {
    if (fStream == null) {
    fStream = new FileOutputStream(filename, true);
}
    fStream.write(data, 0, bytes);
    return;
} catch (IOException ex) {
    ex.printStackTrace();
}

Выдает исключение в строке fStream = new FileOutputStream (filename, true); при создании FileOutputStream.

Журнал стека:

W/System.err( 8147): Caused by: java.io.FileNotFoundException: /storage/emulated/0/my_folder/test_file_name.png: open failed: EACCES (Permission denied)
w/System.err( 8147):    at libcore.io.IoBridge.open(IoBridge.java:409)
W/System.err( 8147):    at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
W/System.err( 8147):    at java.io.FileOutputStream.<init>(FileOutputStream.java:128)
W/System.err( 8147):    at myapp.save(SourceFile:515)
W/System.err( 8147):    ... 8 more
W/System.err( 8147): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
W/System.err( 8147):    at libcore.io.Posix.open(Native Method)
W/System.err( 8147):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
W/System.err( 8147):    at libcore.io.IoBridge.open(IoBridge.java:393)
W/System.err( 8147):    ... 11 more

В файле AndroidManifest.xml объявлены следующие разрешения:

 <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19"/>
    <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Я подтвердил, что пользователи используют конфиденциальные приложения на SD-карте. И что еще более странно, это то, что он не может записать и во внутреннюю память. Как это может произойти, если у меня есть права на чтение и запись? Пользователи говорят, что в то время они не подключали свои устройства к ПК.

Обновить

Оказывается, я слишком часто вызываю и открываю FileOutputStream, что в какой-то момент вызывает исключение FileNotFoundException. Звучит больше как проблема с потоками.

Ответы на вопрос(13)

Ваш ответ на вопрос