首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确检测SD卡是否可用

正确检测SD卡是否可用
EN

Stack Overflow用户
提问于 2013-02-06 04:59:30
回答 2查看 2.1K关注 0票数 3

我使用以下代码来检查SD卡是否可用,但在三星Galaxy II和Note设备上运行Android 4.x和更高版本的操作系统模拟拥有SD卡,即使实际上设备上没有SD卡。

代码语言:javascript
复制
private boolean isSDCardAvailable() {
    return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
}

如果SD卡可用,则调用getExternalCacheDir()获取目录,否则向用户显示错误,并调用getCacheDir()以使用内部存储。

上面的方法返回TRUE和所有设备,即使它们没有SD卡。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-06 05:07:31

请看,此方法从API级别11开始可用,它让您知道内部内存是否用作外部存储。在某些设备中,即使SD卡不可用,getExternalStorageDirectory()也会返回true。有关详细信息,请阅读以下文档。

代码语言:javascript
复制
public static boolean isExternalStorageEmulated ()

在API级别11中添加了

返回设备是否具有模拟的外部存储设备。如果为true,则设备没有实际的外部存储,并且将使用内部存储系统的一部分来分配由getExternalStorageDirectory()返回的目录。

某些系统服务,如包管理器,使用它来确定应用程序的安装位置。

布尔型仿真外部存储也可以加密-参见setStorageEncryption(android.content.ComponentName,

)以了解更多详细信息。

Android docs

票数 5
EN

Stack Overflow用户

发布于 2013-02-06 05:17:31

代码语言:javascript
复制
boolean mExternalStorageAvailable;
boolean mExternalStorageWriteable;

private void checkExternalMedia() {
    mExternalStorageAvailable = false;
    mExternalStorageWriteable = false;
    String state = Environment.getExternalStorageState();

    if (Environment.MEDIA_MOUNTED.equals(state)) {
        mExternalStorageAvailable = mExternalStorageWriteable = true;
    } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        mExternalStorageAvailable = true;
        mExternalStorageWriteable = false;
    } else {
        mExternalStorageAvailable = mExternalStorageWriteable = false;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14716770

复制
相关文章

相似问题

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