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

时间:2012-10-04 06:55:07

标签: java android android-sdcard

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

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

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

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

非常感谢任何帮助。 谢谢。

4 个答案:

答案 0 :(得分: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;
        }
    }

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

答案 1 :(得分:6)

尝试:

Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

答案 2 :(得分:0)

我将在这里向您展示最简单的解决方案。如果你想显示是否插入了SD卡,那么只需尝试找到外部sdcard路径的文件,代码在这里:

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();
         }

答案 3 :(得分:0)

"外部存储"不一定是SD卡,但可以安装内部存储器。许多具有SD卡的新时代Android设备上的方法getExternalStorageState()检查内部内存但不检查SD卡。 更简单的选择是在Context类中使用getExternalMediaDirs() method。它返回一个带绝对路径的文件数组,可用于检测SD卡的存在。