1

好的,所以我已经做了尽可能多的研究,试图找出我是否做错了什么,但是在我的场景中,谷歌或 Android 教程上没有任何东西可以真正回答我。

场景:

假设我有一台内置 16GB 存储空间的 Android 设备。我们还假设该设备有一个 32GB 的 SD 卡。基本上,该设备总共有 48GB 的​​存储空间。我的应用需要扫描设备上每个用户可访问的位置。换句话说,我需要能够访问和读取普通用户(非 root)可以读写的每个地方。

我现在在做什么:

我正在使用推荐Environment.getExternalStorageDirectory()的指向我的/mnt/sdcard.

问题:

是否Environment.getExternalStorageDirectory()要让我访问设备上每个用户可访问的存储空间?我很困惑,因为可以有 16GB 的内置存储和 32GB 的 SD 卡存储,但是 Android 如何处理这两个不同的位置呢?它只是将两者组合成一个单数/mnt/sdcard还是我只能用我的代码行访问两个存储目录之一?

抱歉,如果这听起来像一个菜鸟问题,但来自 iPhone 背景,唯一可用的存储是内部存储,我真的被 Android 处理这种情况的方法难住了。感谢你的帮助!

4

1 回答 1

6

Environment.getExternalStorageDirectory() 是否会让我访问设备上每个用户可访问的存储?

不,它会将您指向外部存储

Android 如何处理这两个不同的位置?

Android 本身主要只关心指定为外部存储的一个位置。超出此范围的任何内容都是特定于设备的,并且取决于制造商(或者可能是 ROM mod 维护者)。

这就是为什么您在当前的 Android SDK 中看不到任何用于访问可能被视为“外部存储”的多个卷的任何内容。

它是否只是将两者组合成一个单一的 /mnt/sdcard

不。

还是我只能使用我的代码行访问两个存储目录之一?

是的。

更新:我写了一系列博客文章试图帮助开发人员了解 Android 存储情况。

于 2013-07-26T13:35:29.323 回答