47

我正在尝试将文件保存到运行 4.2.2 的三星 Galaxy Nexus 上的 SD 卡。从我正在使用的应用程序

Environment.getExternalStorageDirectory()

但它返回

/storage/emulated/0/

这不是我的 SD 卡信息所在的位置。有什么工作方法可以用来获取 SD 卡的正确路径吗?

4

7 回答 7

15

实际上,这是正确的位置。

从 android 4,2 开始,Google 引入了多个用户帐户。每个用户都有他/她自己的外部存储,它在路径中具有用户 ID 以保持唯一性。

主要(默认)用户的 ID 为 0。因此,您将获得/storage/emulated/0/外部存储的路径。

于 2013-03-19T13:53:48.417 回答
10

I just learned this is the Jelly Bean's way of dealing with the lack of android.permission.WRITE_EXTERNAL_STORAGE permission. I haven't seen such a behavior with older versions of Android.

Just add this line to your AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2013-09-29T18:20:15.103 回答
5

Environment.getExternalStorageDirectory()指的是设备制造商认为是“外部存储”的任何东西。我可以是 SD 卡以外的其他东西。

您可以在此处获得更多信息:查找外部 SD 卡位置

于 2013-03-19T13:53:40.407 回答
1

我认为这是因为使用了 genymotion 模拟器,路径是真实的,并且在 Eclipse 中它位于

File Explorer - > mnt - > shell - > emulated -> 0 

希望能帮助到你 ;)

于 2014-08-10T07:40:53.180 回答
0

我不知何故在 /storage/emulated/0 处丢失了我的符号链接,导致了类似的故障。我所做的是使用相机应用程序拍照。我观察到图片详细信息说它在 /storage/emulated/0 中,尽管文件资源管理器中不存在该目录。然后我重新启动了手机。重新启动后,链接存在。

于 2014-09-09T23:46:48.300 回答
0

当然?你认为你的sdcard安装在哪里?尝试ls -l在该目录上进行操作——它可能是指向/storage/emulated/0/.

于 2013-03-19T13:54:05.477 回答
-1

尝试使用getExternalFilesDir()getExternalStoragePublicDirectory()

来自Android 4.2 文档

于 2013-03-19T13:54:25.893 回答