在我的启动屏幕中,我想检查手机是否有 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(使用前将#替换为@)