Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a SD Card has been inserted to the tablet or not : Android?

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 user inserts a SDCARD).

(Not the internal sdcard which comes with the device, I know it can be accessed using Environment.getExternalStorageDirectory())

Is it possible to find out if an user has inserted a sdcard to the device? If yes, Is it possible to get the path of that SD CARD?

I found that hard coding the path was not a good option, cos different devices has different paths for sdcard inserted by user.

Any help is very much appreciated. Thank you.

like image 690
Adarsh H S Avatar asked Dec 02 '22 21:12

Adarsh H S


2 Answers

(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

like image 190
abbas.aniefa Avatar answered Dec 10 '22 12:12

abbas.aniefa


Try:

Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
like image 36
axilos Avatar answered Dec 10 '22 13:12

axilos