open failed: EACCES (Permission denied)

user3613696

I am having a very weird problem with storage accessing on some devices. The app works on my testing devices (Nexus 4 & 7, Samsung GS5). All my devices running Android 4.4.2. But I received many emails from users saying that the app can not write to the storage (neither the internal storage nor the sd card). From the log file received from user feedback, I can see the problem is the following code:

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

It throws exception at the line fStream = new FileOutputStream(filename, true); when creating FileOutputStream.

The stack log is:

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

In the AndroidManifest.xml I have the following permissions declared:

 <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"/> 

I've confirmed that the users are using the correct app's private on the SD card. And what's more weird is that it fails to write to internal storage as well. How can this happen if I have both read & write permissions? The users say they are not connecting their devices to the PC at that time.

Update

It turns out I am calling open and close FileOutputStream too frequently, which throws the FileNotFoundException at some point. Sounds more like a threading issue.

Garret

I ran into a similar issue a while back.

Your problem could be in two different areas. It's either how you're creating the file to write to, or your method of writing could be flawed in that it is phone dependent.

If you're writing the file to a specific location on the SD card, try using Environment variables. They should always point to a valid location. Here's an example to write to the downloads folder:

java.io.File xmlFile = new java.io.File(Environment
    .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
     + "/Filename.xml");

If you're writing the file to the application's internal storage. Try this example:

java.io.File xmlFile = new java.io.File((getActivity()
   .getApplicationContext().getFileStreamPath("FileName.xml")
   .getPath()));

Personally I rely on external libraries to handle the streaming to file. This one hasn't failed me yet.

org.apache.commons.io.FileUtils.copyInputStreamToFile(is, file);

I've lost data one too many times on a failed write command, so I rely on well-known and tested libraries for my IO heavy lifting.

If the files are large, you may also want to look into running the IO in the background, or use callbacks.

If you're already using environment variables, it could be a permissions issue. Check out Justin Fiedler's answer below.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Java

BitmapFactory: Unable to decode stream: java.io.FileNotFoundException:open failed: EACCES (Permission denied) on Android Q

From Dev

java.io.filenotfoundexception open failed eacces (permission denied) on device

From Dev

mq_open() - EACCES, Permission denied

From Dev

Android : open failed eacces permission denied

From Dev

FileNotFoundException: /storage/emulated/0/Pictures/pic.jpg: open failed: EACCES (Permission denied)

From Dev

java.io.FileNotFoundException: /storage/sdcard/MyApp/questions.txt: open failed: EACCES (Permission denied)

From Dev

open failed EACCES (Permission denied)

From Dev

Android IOException: open failed: EACCES (Permission denied)

From Dev

Android 6.0 open failed: EACCES (Permission denied)

From Dev

Android open failed: EACCES (Permission denied) in implementing PDF Reader library

From Dev

open failed: EACCES (Permission denied) from IoBridge.java in AsyncTask

From Dev

Android Write file on sd card getting error : Open Failed eacces permission denied

From Dev

Android open failed: EACCES (Permission denied) when try to read a file in data/data

From Dev

open failed: EACCES (Permission denied)

From Dev

BitmapFactory: Unable to decode stream: java.io.FileNotFoundException:open failed: EACCES (Permission denied) on Android Q

From Dev

java.io.FileNotFoundException: /storage/emulated/0/New file.txt: open failed: EACCES (Permission denied)

From Dev

open failed: EACCES (Permission denied) error

From Dev

Android exception 'open failed: EACCES (Permission denied)' - not due to the SD card

From Dev

java.io.filenotfoundexception open failed eacces (permission denied) on device

From Dev

open of .rpm failed: Permission denied

From Dev

Android : open failed eacces permission denied

From Dev

Open failed: EACCES (Permission denied) in Android

From Dev

Android IOException: open failed: EACCES (Permission denied)

From Dev

Android open failed: EACCES (Permission denied) in implementing PDF Reader library

From Dev

'open failed: EACCES (Permission denied)' on Android

From Dev

mp4prasser exception java.io.IOException: open failed:EACCES (Permission denied)

From Dev

open failed: EACCES (Permission denied) in marshmallow while upload image to server

From Dev

Android open failed: EACCES (Permission denied) when writing file in data/data/package/files

From Dev

open failed: EACCES (Permission denied) on first run

Related Related

  1. 1

    BitmapFactory: Unable to decode stream: java.io.FileNotFoundException:open failed: EACCES (Permission denied) on Android Q

  2. 2

    java.io.filenotfoundexception open failed eacces (permission denied) on device

  3. 3

    mq_open() - EACCES, Permission denied

  4. 4

    Android : open failed eacces permission denied

  5. 5

    FileNotFoundException: /storage/emulated/0/Pictures/pic.jpg: open failed: EACCES (Permission denied)

  6. 6

    java.io.FileNotFoundException: /storage/sdcard/MyApp/questions.txt: open failed: EACCES (Permission denied)

  7. 7

    open failed EACCES (Permission denied)

  8. 8

    Android IOException: open failed: EACCES (Permission denied)

  9. 9

    Android 6.0 open failed: EACCES (Permission denied)

  10. 10

    Android open failed: EACCES (Permission denied) in implementing PDF Reader library

  11. 11

    open failed: EACCES (Permission denied) from IoBridge.java in AsyncTask

  12. 12

    Android Write file on sd card getting error : Open Failed eacces permission denied

  13. 13

    Android open failed: EACCES (Permission denied) when try to read a file in data/data

  14. 14

    open failed: EACCES (Permission denied)

  15. 15

    BitmapFactory: Unable to decode stream: java.io.FileNotFoundException:open failed: EACCES (Permission denied) on Android Q

  16. 16

    java.io.FileNotFoundException: /storage/emulated/0/New file.txt: open failed: EACCES (Permission denied)

  17. 17

    open failed: EACCES (Permission denied) error

  18. 18

    Android exception 'open failed: EACCES (Permission denied)' - not due to the SD card

  19. 19

    java.io.filenotfoundexception open failed eacces (permission denied) on device

  20. 20

    open of .rpm failed: Permission denied

  21. 21

    Android : open failed eacces permission denied

  22. 22

    Open failed: EACCES (Permission denied) in Android

  23. 23

    Android IOException: open failed: EACCES (Permission denied)

  24. 24

    Android open failed: EACCES (Permission denied) in implementing PDF Reader library

  25. 25

    'open failed: EACCES (Permission denied)' on Android

  26. 26

    mp4prasser exception java.io.IOException: open failed:EACCES (Permission denied)

  27. 27

    open failed: EACCES (Permission denied) in marshmallow while upload image to server

  28. 28

    Android open failed: EACCES (Permission denied) when writing file in data/data/package/files

  29. 29

    open failed: EACCES (Permission denied) on first run

HotTag

Archive