I have some code to create/get a folder on SD card:
if( hasSDCard() ){
UUID uniqueFileName = UUID.randomUUID();
mediaStorageDir = new File(
getExternalImageStoragePath(),
"MyApp");
if ( ! mediaStorageDir.exists() ){
if( ! mediaStorageDir.mkdirs() ){
MyLogger.Error("Create image directory FAILED. path: " + mediaStorageDir.getPath());
return null;
}
}
and I have the permission registered in my Manifest file:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STOREAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
but when I run it, it prints:
Create image directory FAILED. path: /storage/emulated/0/Pictures/MyApp
I was wondering why this happens?
=== UPDATE ===
I have tried all of them:
/**
* get external storage directory path for image
* @return
*/
public static String getExternalImageStoragePath(){
String strPath = "";
if(hasSDCard()){
//strPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath();
//strPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
//strPath = Environment.getExternalStorageDirectory().getPath();
strPath = Environment.getExternalStorageDirectory().getAbsolutePath();
}
return strPath;
}
But they all behave exactly the same...
=== UPDATE 2 ===
I am testing with Nexus 5. I saw this post Cannot find storage/emulated/0/ folder of Nexus 7 in Eclipse There might be some issue?
=== UPDATE 3 ===
>> adb shell ls -l /storage/
dr-xr-xr-x root root 1970-01-24 23:48 emulated
lrwxrwxrwx root root 1970-01-24 23:48 sdcard0 -> /storage/emulated/legacy
>> adb shell ls -l /storage/emulated/0/Pictures/
/storage/emulated/0/Pictures/: No such file or directory
=== UPDATE 4 ===
Here is my hasSD()
method:
public static boolean hasSDCard(){
boolean fHasSDCard = false;
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
fHasSDCard = true;
}
return fHasSDCard;
}