所以我注意到,从一个设备到另一个设备,内部和外部有许多不同的配置。在我的Evo上,只有内部存储和外部SD卡,但在同年的Droid Incredible上,有内部存储,内部SD卡(~8 1GB)和外部SD卡(默认为1 1GB)。大概还有其他的配置,而且还会有更多的配置。
但是,关于枚举可用存储介质的数量,我能找到的似乎都是像Environment这样的东西,在这些东西中,您可以做像getExternalStorageDirectory()这样的事情,它返回一个文件,而不是File[]或任何类似的东西。是否有一种更安全、更通用的方法来枚举所有可用的存储介质?您是否只需导航到/mnt/并在那里获得一个列表,即可查看所有已挂载的卷?
发布于 2012-03-17 03:23:32
是否有一种更安全、更通用的方法来枚举所有可用的存储介质?
从软件开发工具包的角度来看,有内部存储(getFilesDir())和外部存储(Environment.getExternalStorageDirectory())。在Android 1.x/2.x上,它们将是独立的分区;在Android 3.0+上,它们将是单个分区。
根据定义,做任何超出SDK所提供内容的操作都是不安全的。没有关于分区名称、它们的角色、您是否可以读取它们、是否可以写入它们等的保证。即使您要构建一个包含所有可能性(型号、操作系统版本、分区及其状态)的数据库,该数据库对于新设备和操作系统版本来说也将永远过时。
您可以通过MediaStore访问其他分区上的媒体文件。例如,一些设备制造商除了提供板载外部存储外,还提供SD卡,因此SD卡上包含的任何媒体文件都会显示在MediaStore中。这可能允许您使用其他制造商提供的分区(例如,SD卡)上的内容,但AFAIK MediaStore不提供在这些分区上放置新文件的方法。
https://stackoverflow.com/questions/9741939
复制相似问题