I am working on a simple app, which should be able to access files from internal storage and as well as from external storage (Removable cards) like Micro SD cards (when an
(Not the internal sdcard which comes with the device, I know it can be accessed using Environment.getExternalStorageDirectory() )
Android consider Both removable storage media (such as an SD card) or an internal (non-removable) storage as external storage only.
Following is form developer.android.com
Every Android-compatible device supports a shared "external storage" that you can use to save files. This can be a removable storage media (such as an SD card) or an internal (non-removable) storage. Files saved to the external storage are world-readable and can be modified by the user when they enable USB mass storage to transfer files on a computer.
To check SDCard availability you can use following code.
private boolean isExternalStorageAvailable() {
String state = Environment.getExternalStorageState();
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but
// all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
if (mExternalStorageAvailable == true
&& mExternalStorageWriteable == true) {
return true;
} else {
return false;
}
}
Please read http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
The simplest solution i am going to show you here. if you want to show whether sdcard is inserted or not, Then just try to find the files of the external sdcard path, code is here:
File file = new File("/mnt/extSdCard");
try
{
File list[] = file.listFiles();
Toast.makeText(getApplicationContext(), "Yes sdcard is mounted, file count "+list.length, Toast.LENGTH_LONG).show();
}
catch(NullPointerException o)
{
Toast.makeText(getApplicationContext(), "Sorry no sdcard is mounted:", Toast.LENGTH_LONG).show();
}
Try:
Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
"External storage" is not necessarily an SD card but can be mounted internal memory. The method getExternalStorageState()
on much new age Android devices with SD card checks the internal memory but not SD card.
The more simple option would be to use getExternalMediaDirs()
method within Context class. It returns an array of files with absolute path and can be used to detect the presence of SD card.