2013-07-26 74 views
1

好的,所以我尽可能地做了大量的研究,试图弄清楚我是否做错了什么,但Google或Android教程中的任何内容都不能真正回答我的情况。如何处理内置存储和外部SD卡?

的情景:

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

我在做什么现在:

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

问题:

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

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

+1

http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()。从文档中引用传统上,这是一张SD卡,但它也可以作为内置存储设备实现,该设备不同于受保护的内部存储设备,并且可以作为文件系统安装在计算机上。 – Raghunandan

回答

6

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

不,它指向external storage

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

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

这就是为什么你在目前的Android SDK中没有看到任何东西来访问所有可能被认为是“外部存储”的多个卷。

是否只是两者结合成一个单一的/ mnt/SD卡

还是我只能够访问这两个存储目录中的一个与我行码?

是的。

UPDATE:我写了a series of blog posts试图帮助开发者理解Android的存储情况。

+0

嘿,感谢您的超级快速回复!我基本上是在制作一个音乐播放器,所以我需要能够访问用户传送到他/她的设备的音乐文件。假设用户的内置存储器上有几个文件,物理SD卡上有几个文件。我如何访问这两个位置?从你的文章中听起来像,我只使用Environment.getExternalStorageDirectory()时,只是针对这两个位置之一。再次感谢! – NewGradDev

+0

@ user1666541:“我如何访问这两个位置?” - 一个普通的音乐播放器不应该关心这些位置中的任何*。一个普通的音乐播放器应该通过'MediaStore'找到它的音乐。许多设备制造商增加了“MediaStore”来索引所有面向用户的存储位置,而不仅仅是官方的外部存储。另外,它可以让你免于自己扫描所有的东西。如果您不想使用'MediaStore',则除了设备的官方外部存储设备之外,您没有可靠的选项可访问面向用户的商店。 – CommonsWare

+0

这很有趣。直到几个星期前我才使用'MediaStore',但是我切换到自己的自定义扫描仪,因为我需要一些'MediaStore'不提供的功能。但我仍然不明白:如果用户可以访问他/她的SD卡和内置存储的两个单独位置,我是否也不能访问它们?再次感谢您的所有帮助。 – NewGradDev

相关问题