检查SDCard是否存在,布尔值始终为true

2024-02-28

在我的启动屏幕中,我想检查手机是否有 SDCard。布尔语句如下:

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

所以,如果我手机上的插槽中有 SDCard,这个布尔值将返回 true,到目前为止一切顺利。当我从设置菜单中转到“卸载 SDCard”并删除 SDCard,然后终止该应用程序并再次启动它时,布尔值也将为 true。

如果我启动Astro File Manager卸载并取出SD卡后,我仍然可以访问/mnt/sdcard路径,为什么?

我怎样才能做到这一点?

提前致谢!

EDIT

使用以下代码进行测试:

File path = Environment.getExternalStorageDirectory(); 
String pathS = path.getPath();

当 SDCard 插入插槽时,pathS包含mnt/sdcard,但是当我取出SD卡时pathS还是/mnt/sdcard ...


我发现手机,例如三星的 Galaxy 手机,具有/mnt/sdcard指向内部存储器,而不是预期的外部 SD 卡。

您可以知道返回的路径是否为环境.getExternalStorageDirectory() http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()实际上是外部SD卡,调用环境.isExternalStorageRemovable() http://developer.android.com/reference/android/os/Environment.html#isExternalStorageRemovable()

只是想从 getExternalStorageDirectory() 的文档中添加此重要说明:

注意:不要对这里的“外部”一词感到困惑。这个目录 最好将其视为媒体/共享存储。它是一个文件系统 可以容纳相对大量的数据,并且可以在多个系统之间共享 所有应用程序(不强制执行权限)。传统上这是 SD 卡,但也可以作为内置存储器实现 设备与受保护的内部存储不同,并且可以 作为文件系统安装在计算机上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查SDCard是否存在,布尔值始终为true 的相关文章

随机推荐