Android - 查找所有内部和外部存储

时间:2012-03-16 17:36:08

标签: android filesystems sd-card

所以我注意到,从设备到设备,内部与外部有许多不同的配置。在我的Evo上只有内部存储和外部SD卡,但在同一年的Droid Incredible上,有内部存储,内部SD卡(~8GB)和外部SD卡(默认1GB)。据推测,还有其他配置,并且还会有更多的配置。

然而,我似乎发现有关列举可用存储介质数量的所有内容都是Environment之类的东西,你可以在其中执行getExternalStorageDirectory()这样的事情,它返回一个文件,而不是File []或类似的东西。那。是否有更安全,通用的方法来枚举所有可用的存储介质?您是否只需导航到/ mnt /并在那里获取列表以查看所有已安装的卷?

1 个答案:

答案 0 :(得分:1)

  

是否有一种更安全,更通用的方法来枚举所有可用的存储介质?

从SDK的角度来看,有内部存储(getFilesDir()),还有外部存储(Environment.getExternalStorageDirectory())。在Android 1.x / 2.x上,这些将是单独的分区;在Android 3.0+上,它们将是一个分区。

根据定义,做任何超出SDK提供的内容都是不安全的。无法保证分区名称,它们的角色是什么,是否可以从中读取,是否可以写入它们等等。即使您要构建所有可能性的数据库(模型,操作系统版本,分区和他们的状态),该数据库将永远过时 vis 新设备和操作系统版本。

可以通过MediaStore 访问其他分区上的媒体文件。例如,除了板载外部存储器之外,一些提供SD卡的设备制造商会索引SD卡的文件,因此SD卡中包含的任何媒体文件都会显示在MediaStore中。这可能允许您使用其他制造商提供的分区(例如SD卡)上的内容,但AFAIK MediaStore无法为您在此类分区上放置新文件。