如何通过Android中的代码/ API查找SD卡是否存在?

时间:2015-07-03 12:46:08

标签: android

如何获取SD卡是否已安装/插入Android设备的状态。 以下内容始终返回TRUE:

android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)

有几个与此相关的帖子,但我找不到独立于制造商的解决方案。

1 个答案:

答案 0 :(得分:1)

Android API :遍历可通过getExternalStoragePublicDirectory获得的所有外部存储空间,并在每个存储空间中调用isExternalStorageRemovable。当您找到一个时,询问它是否与getExternalStorageState一起安装。但是,可能会发生SD卡未用于任何外部存储目录,因此您无法找到它。

fstab :解析/etc/vold.fstab,找到挂载点,询问它们是否可以isExternalStorageRemovable删除,并使用getExternalStorageState检查其状态。由于它不使用公共API,因此在某些Android版本(包括未来版本)中可能无法正常运行。当SD卡不用于任何外部存储器时,它可能无法工作。

挂载:解析/proc/mounts并执行与fstab相同的操作,但如果SD卡未用于任何外部存储,则可能无效。或者使用vfat搜索任何分区,但可能会返回误报。 /proc/mounts是一个公共Linux API,因此它在任何地方都以相同的格式存在。如果那里找不到SD卡,则无法区分SD卡是否已卸载或根本不支持。

然而,真的没有理由需要它(这就是为什么没有简单的API)。如果要将某些内容放入外部存储器,则应使用getExternalStoragePublicDirectory提供的相应目录,而不管它是否为SD卡。