2012-10-19 295 views
7

我currenlty有一些问题与开发APP和使用外部SD卡。Android SD卡问题

:我用/尝试下面的代码您可以使用“外部存储”来保存文件。这可以是可移动存储介质(如SD卡)或内部(不可移动)存储器。保存到外部存储的文件是世界可读的,并且可以在用户启用USB大容量存储器在计算机上传输文件时进行修改。

也许这是一个问题?

我使用的是LG L5(E610)

我已经添加了正确的权限清单文件。

我的其他问题可能与此有关issue

任何帮助是非常赞赏。谢谢。

+0

请每个问题打开一个问题。 – pcans

+0

已拆分问题 – Rik

回答

0

搞定了,是自己的问题。

感谢所有的帮助..

6

你说:

的第一个问题是,我检查是否有一个SD卡安装。即使没有插入SD卡,此函数也会返回true。

我觉得你偶然发现了一些需要一些时间去掌握的东西,因为它根本不是清晰的。

在Android中,你会发现2个种类的内存:

  • 系统中的一个,总是可用的,高度安全:您的应用程序只能访问专用的一小部分,为您和其他应用无法读取数据那里。
  • 共享一个,通常称为公共,外部或“sdcard”。每个应用程序都可以读取/写入所有的应用程序。但它并不总是可用的,因为你可以“安装”它在你的计算机上,具有在Android中卸载它并因此隐藏它的效果。 (但只在android 3.X之前)。

您可发现3种器件在野外:

  • 在某些设备上,这种共享内存是在设备内部焊接在芯片上。所以名称SD卡是不够的。但是,路径可能是“/ sdcard”
  • 在其他设备上,此共享内存位于您可以删除的真实SD卡上。
  • 在其他一些设备上,此存储器用于芯片上的一部分,另一部分用于SD卡上。

根据你说的我认为你是在第三种设备上。所以你的物理SD卡将在这种路径中找到:/mnt/sdcard/external_sd/。不幸的是,这是设备特定的,我不认为在Android API中有什么东西可以获得这个路径。另外,请记住,自从Android 3.X以来,我们不需要“挂载”这个共享内存了。因此,我们现在使用MTP协议时,您的共享内存将始终存在于Android中。

这就是为什么isExternalStorageAvailable()返回true,即使您的SD卡被移除。

+0

文件rootsd = Environment.getExternalStorageDirectory();可能会给出正确的目录,我现在不能尝试。还是你说即使在第三种类型的设备路径可能存在没有卡? – weston

+0

在第三种类型中,getExternStorageDirectory()将为您提供“/ mnt/sdcard /”,即使您的物理SD卡被移除,它也会存在,可以读取或写入。 – pcans

+0

确实与getExternalStorageDirectory()函数我得到路径“/ mnt/sdcard /”并进入我需要添加“external_sd /”文件夹,但这给我阅读文件的问题(请参阅其他问题)。 – Rik