7

我目前在开发 APP 和使用外置 SD 卡时遇到了一些问题。

来自 developer.android.com

每个与 Android 兼容的设备都支持一个共享的“外部存储”,您可以使用它来保存文件。这可以是可移动存储介质(例如 SD 卡)或内部(不可移动)存储。保存到外部存储的文件是世界可读的,并且可以由用户在启用 USB 大容量存储以传输计算机上的文件时进行修改。

也许这是个问题?

我正在使用 LG L5 (E610)

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

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

很感谢任何形式的帮助。谢谢你。

4

2 回答 2

6

你说:

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

我认为您偶然发现了一些需要一些时间才能掌握的东西,因为它根本不是很清楚。

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

  • 系统一,始终可用,高度安全:您的应用程序只能访问专用于您的一小部分,其他应用程序无法读取您的数据。
  • 共享的,通常称为公共的、外部的或“sdcard”。每个应用程序都具有对所有内容的读/写访问权限。但它并不总是可用的,因为您可以将它“挂载”在您的计算机上,从而在 android 中卸载它并因此隐藏它。(但仅在 android 3.X 之前)。

您会在野外找到 3 种设备:

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

根据你所说的,我认为你是第三种设备。因此,您的物理 sdcard 将在这种路径中找到:/mnt/sdcard/external_sd/. 可悲的是,这是特定于设备的,我认为 Android API 中没有任何东西可以获取此路径。

另外,请记住,从 Android 3.X 开始,我们不再需要“挂载”这个共享内存。因此,您的共享内存将始终存在于 Android 中,因为我们现在使用的是 MTP 协议。

这就是 isExternalStorageAvailable() 返回 true 的原因,即使您的 sdcard 已被移除。

于 2012-10-19T12:26:58.340 回答
0

修好了,是自己的问题。

谢谢大家的帮助。。

于 2012-10-22T12:44:41.260 回答