首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查SD卡是否已插入平板电脑: Android?

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

Stack Overflow用户
提问于 2012-10-04 14:55:07
回答 4查看 10.6K关注 0票数 4

我在一个简单的应用程序上工作,它应该能够访问文件从内部存储以及从外部存储(可移动卡),如微型SD卡(当用户插入SD卡)。

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

是否可以找出用户是否已将SD卡插入设备?如果是,是否可以获取该SD卡的路径?

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

任何帮助都是非常感谢的。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-04 15:09:24

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

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

以下是表单developer.android.com

每一个与安卓系统兼容的设备都支持一个共享的“外部存储器”,你可以用它来保存文件。这可以是可移动存储介质(如SD卡)或内部(不可移动)存储。保存到外部存储器的文件是完全可读的,并且当它们启用USB大容量存储器以在计算机上传输文件时,用户可以修改这些文件。

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

代码语言:javascript
复制
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

票数 11
EN

Stack Overflow用户

发布于 2012-10-04 15:00:26

尝试:

代码语言:javascript
复制
Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
票数 6
EN

Stack Overflow用户

发布于 2015-08-03 23:39:35

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

代码语言:javascript
复制
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();
         }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12721827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档