4.4.2我的SD卡位置在哪里?

在Android 4.4.2 Environment.getExternalStorageDirectory().getPath()返回/storage/emulated/0但是这个path在我的Nexus5 Android 4.4.2上不存在。 Environment.getExternalStorageDirectory().getPath()直到Android 4.4.2。

如何获得Android 4.4.2上的/sdcardpath?

Solutions Collecting From Web of "4.4.2我的SD卡位置在哪里?"

这个path在我的Nexus5 Android 4.4.2上不存在。

是的,它在运行时为你的过程。

例如, 此示例项目将文件下载到Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) 。 如果您在运行时logging位置,则在Nexus 5上运行时,会将其报告为/storage/emulated/0/Download 。 并且下载成功。

如果您正在通过DDMS或adb shell查找/storage/emulated/0 ,则不会find它。 对于这些工具,默认的外部存储是/mnt/shell/emulated/0 。 因此,从以上示例中下载的文件出现在/mnt/shell/emulated/0/Download目录中。

AFAIK,区别是提供独立的外部存储到次级帐户。

有时/ storage / emulated / 0可以写入,但是读取失败…所以testing“可写性”是不够的。 这是一个令人讨厌的问题,我提出了一个同样烦人但有效的解决scheme。 硬编码“/ mnt / sdcard”是的,我说过了。

看起来像别人说的第一个… 在SD卡上存储android应用程序的数据

更多的喜悦… http://forums.bignerdranch.com/viewtopic.php?f=414&t=7407

存储选项文档说使用Environment.getExternalStorageDirectory() (因为你已经正确使用)。 此function适用于所有版本的Android。

你看到它返回一个实际上在4.2设备上不可用的path吗?

请注意(来自Environment.getExternalStorageDirectory() ):

应用程序不应直接使用此顶级目录,以避免污染用户的根名称空间。 应用程序专用的任何文件都应放置在由Context.getExternalFilesDir返回的目录中,如果应用程序被卸载,系统将负责删除这些文件。 其他共享文件应放在getExternalStoragePublicDirectory(String)返回的目录之一中。

写入此path需要WRITE_EXTERNAL_STORAGE权限,并且以读取权限开始需要READ_EXTERNAL_STORAGE权限,如果您拥有写入权限,则会自动授予该权限。

从KITKAT开始,如果您的应用程序只需要存储内部数据,请考虑使用getExternalFilesDir(String)或getExternalCacheDir(),它们不需要读取或写入权限。