getExternalStorageDirectory not working

I am trying to save a file to my SDcard on my Samsung Galaxy Nexus running 4.2.2. From my app I am using

Environment.getExternalStorageDirectory()

But it returns

/storage/emulated/0/

Which is not where my SDcard information is located to. Is there any working method I can use to get the correct path to my SDcard?


Actually, that is the correct location.

From android 4,2 onwards, Google introduced multiple user accounts. Every user has his/her own external storage, which has the user ID in the path to maintain uniqueness.

The primary (default) user's ID is 0. So you get /storage/emulated/0/ as the path to the external storage.


I just learned this is the Jelly Bean's way of dealing with the lack of android.permission.WRITE_EXTERNAL_STORAGE permission. I haven't seen such a behavior with older versions of Android.

Just add this line to your AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Environment.getExternalStorageDirectory() refers to whatever the device manufacturer considered to be "external storage". I can be something else than the SD-card.

You may get more informations here: Find an external SD card location