你说:
的第一个问题是,我检查是否有一个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卡被移除。
请每个问题打开一个问题。 – pcans
已拆分问题 – Rik