I am trying to save a file to external storage (Android 4.2.2).
I am using the correct permission in the manifest.xml file:
<manifest ...> ... <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> ...
An external SD card is available, I can prove it with another application for reading and writing files. The path / mnt / extsd / is valid, look at the image below. An external SD card is writable because I can copy / paste files into it.

Code:
try { String path = "/mnt/extsd/file.dat" File f = new File(path); f.createNewFile(); return true; } catch (Exception e) { e.printStackTrace(); return false; }
I get an error on f.createNewFile(); :
W/System.err(2172): java.io.IOException: open failed: EACCES (Permission denied) W/System.err(2172): at java.io.File.createNewFile(File.java:948) W/System.err(2172): at solarapp.activities.settings.application.ActivityBackup$BackupTask.doInBackground(ActivityBackup.java:77) W/System.err(2172): at solarapp.activities.settings.application.ActivityBackup$BackupTask.doInBackground(ActivityBackup.java:1) W/System.err(2172): at android.os.AsyncTask$2.call(AsyncTask.java:287) W/System.err(2172): at java.util.concurrent.FutureTask.run(FutureTask.java:234) W/System.err(2172): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) W/System.err(2172): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) W/System.err(2172): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) W/System.err(2172): at java.lang.Thread.run(Thread.java:856) W/System.err(2172): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) W/System.err(2172): at libcore.io.Posix.open(Native Method) W/System.err(2172): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) W/System.err(2172): at java.io.File.createNewFile(File.java:941)
If I use String path = "/mnt/extsd/file.dat" , everything works fine! So where is the problem?
EDIT
I use this solution to get a list of available repositories:
How to get a list of connected external storage of an Android device
And, as suggested, I send the result of the adb shell cat /proc/mounts :
rootfs / rootfs rw 0 0 tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 none /acct cgroup rw,relatime,cpuacct 0 0 tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0 tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0 tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0 none /dev/cpuctl cgroup rw,relatime,cpu 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 /dev/block/by-name/system /system ext4 ro,relatime,data=ordered 0 0 /dev/block/by-name/cache /cache ext4 rw,nosuid,nodev,noatime,nomblk_io_submit,data=ordered 0 0 /dev/block/by-name/data /data ext4 rw,nosuid,nodev,noatime,nomblk_io_submit,noauto_da_alloc,data=ordered 0 0 /dev/block/vold/93:72 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0 /dev/block/vold/93:72 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0 tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0 /dev/block/vold/179:1 /mnt/extsd vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1023,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0
Response to adb shell cat /proc/partitions
major minor
Response to the adb shell cat /proc/devices and adb shell ls -l /mnt
Character devices: 1 mem 4 /dev/vc/0 4 tty 5 /dev/tty 5 /dev/console 5 /dev/ptmx 7 vcs 10 misc 13 input 29 fb 81 video4linux 100 telephony 108 ppp 116 alsa 128 ptm 136 pts 150 cedar_dev 166 ttyACM 180 usb 188 ttyUSB 189 usb_device 216 rfcomm 247 lcd 248 capture 249 disp 250 ttyGS 251 ttyS 252 sunxi_pwm 253 bsg 254 rtc Block devices: 259 blkext 7 loop 8 sd 65 sd 66 sd 67 sd 68 sd 69 sd 70 sd 71 sd 93 nand 128 sd 129 sd 130 sd 131 sd 132 sd 133 sd 134 sd 135 sd 179 mmc 254 device-mapper /system/bin/sh: cat: and: No such file or directory /system/bin/sh: cat: adb: No such file or directory /system/bin/sh: cat: shell: No such file or directory /system/bin/sh: cat: ls: No such file or directory /system/bin/sh: cat: -l: No such file or directory /system/bin/sh: cat: /mnt: Is a directory
Reply to adb shell ls -l /mnt
drwxr-xr-x root system 2014-04-22 11:56 asec d---rwxr-x system media_rw 1970-01-01 01:00 extsd drwxrwx--- media_rw media_rw 2014-04-22 11:56 media drwxr-xr-x root system 2014-04-22 11:56 obb d---rwxr-x system sdcard_rw 2014-04-22 12:26 sdcard drwx------ root root 2014-04-22 11:56 secure drwx------ shell shell 2014-04-22 11:56 shell d--------- system system 2014-04-22 11:56 usbhost1