我正在尝试将文件保存到运行 4.2.2 的三星 Galaxy Nexus 上的 SD 卡。从我正在使用的应用程序
Environment.getExternalStorageDirectory()
但它返回
/storage/emulated/0/
这不是我的 SD 卡信息所在的位置。有什么工作方法可以用来获取 SD 卡的正确路径吗?
实际上,这是正确的位置。
从 android 4,2 开始,Google 引入了多个用户帐户。每个用户都有他/她自己的外部存储,它在路径中具有用户 ID 以保持唯一性。
主要(默认)用户的 ID 为 0。因此,您将获得/storage/emulated/0/
外部存储的路径。
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" />
Environment.getExternalStorageDirectory()
指的是设备制造商认为是“外部存储”的任何东西。我可以是 SD 卡以外的其他东西。
您可以在此处获得更多信息:查找外部 SD 卡位置
我认为这是因为使用了 genymotion 模拟器,路径是真实的,并且在 Eclipse 中它位于
File Explorer - > mnt - > shell - > emulated -> 0
希望能帮助到你 ;)
我不知何故在 /storage/emulated/0 处丢失了我的符号链接,导致了类似的故障。我所做的是使用相机应用程序拍照。我观察到图片详细信息说它在 /storage/emulated/0 中,尽管文件资源管理器中不存在该目录。然后我重新启动了手机。重新启动后,链接存在。
当然?你认为你的sdcard安装在哪里?尝试ls -l
在该目录上进行操作——它可能是指向/storage/emulated/0/
.
尝试使用getExternalFilesDir()
或getExternalStoragePublicDirectory()
。