【问题标题】:Android SD card issues安卓 SD 卡问题
【发布时间】:2013-05-15 14:26:11
【问题描述】:

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

来自 developer.android.com

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

也许这是个问题?

我使用的是 LG L5 (E610)

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

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

非常感谢任何帮助。谢谢。

【问题讨论】:

  • 请为每个问题打开一个问题。
  • 已拆分问题

标签: java android xml android-sdcard


【解决方案1】:

你说:

第一个问题是我检查是否安装了 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 开始,我们不再需要“挂载”这个共享内存。因此,由于我们现在使用的是 MTP 协议,因此您的共享内存将始终存在于 Android 上。

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

【讨论】:

  • 文件根d = Environment.getExternalStorageDirectory();可能会给出正确的目录,我现在不能尝试。或者您是说即使在第 3 种设备路径中也可能存在无卡?
  • 第三种,getExternStorageDirectory() 会给你“/mnt/sdcard/”,它会存在,即使你的物理sdcard被移除也可以读取或写入。
  • 确实使用 getExternalStorageDirectory() 函数我得到了路径“/mnt/sdcard/”并进入文件夹我需要添加“external_sd/”但这给我读取文件带来了问题(请参阅其他问题)。
【解决方案2】:

解决了,是自己的问题。

感谢大家的帮助..

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2017-08-30
    • 2016-01-13
    • 1970-01-01
    相关资源
    最近更新 更多