如何检查SD卡是否已插入平板电脑:Android?

Ada*_*H S 3 java android android-sdcard

我正在开发一个简单的应用程序,它应该能够从内部存储器以及外部存储器(可移动卡)访问文件,如Micro SD卡(当用户插入SDCARD时).

(不是设备附带的内部SD卡,我知道可以使用它访问 Environment.getExternalStorageDirectory())

是否可以确定用户是否已将SD卡插入设备?如果是,是否有可能获得SD卡的路径?

我发现对路径进行硬编码不是一个好的选择,因为不同的设备有不同的用户插入的SD卡路径.

很感谢任何形式的帮助.谢谢.

abb*_*efa 11

(不是设备附带的内部SD卡,我知道可以使用Environment.getExternalStorageDirectory()访问它)

Android将可移动存储介质(例如SD卡)或内部(不可移动)存储视为仅外部存储.

以下是developer.android.com的表格

每个Android兼容设备都支持可用于保存文件的共享"外部存储".这可以是可移动存储介质(例如SD卡)或内部(不可移动)存储.保存到外部存储器的文件是世界可读的,当用户启用USB海量存储器在计算机上传输文件时,可以对其进行修改.

要检查SDCard可用性,您可以使用以下代码.

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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

请阅读http://developer.android.com/guide/topics/data/data-storage.html#filesExternal


小智 6

尝试:

Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
Run Code Online (Sandbox Code Playgroud)