我正在尝试将文件保存到运行4.2.2的Samsung Galaxy Nexus上的SD卡。从我的应用程序我正在使用
Environment.getExternalStorageDirectory()
但它返回
/storage/emulated/0/
这不是我的SD卡信息所在的位置。我可以使用任何工作方法来获取SD卡的正确路径吗?
答案 0 :(得分:15)
实际上,这是正确的位置。
从Android 4,2起,Google引入了多个用户帐户。每个用户都有自己的外部存储,在路径中有用户ID以保持唯一性。
主要(默认)用户的ID为0.因此,您将/storage/emulated/0/
作为外部存储的路径。
答案 1 :(得分:9)
我刚刚了解到这是Jelly Bean处理缺少android.permission.WRITE_EXTERNAL_STORAGE
权限的方式。我还没有看到旧版Android的这种行为。
只需将此行添加到AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 2 :(得分:5)
Environment.getExternalStorageDirectory()
指设备制造商认为是“外部存储”的任何内容。我可以是SD卡以外的其他东西。
您可以在此处获得更多信息:Find an external SD card location
答案 3 :(得分:1)
我认为这是因为使用了genymotion模拟器, 路径是真的,在Eclipse中它位于
File Explorer - > mnt - > shell - > emulated -> 0
希望它有所帮助;)
答案 4 :(得分:0)
不确定?您认为您的SD卡安装在哪里?尝试在该目录上执行ls -l
- 它可能是/storage/emulated/0/
的符号链接。
答案 5 :(得分:0)
我以某种方式丢失了我的符号链接/ storage / emulated / 0,导致类似的失败。我做的是使用相机应用程序拍照。我观察到图片细节表示它在/ storage / emulated / 0内,尽管该目录在文件资源管理器中不存在。然后我重新启动了手机。重新启动后,链接就存在了。
答案 6 :(得分:-1)
尝试使用getExternalFilesDir()
或getExternalStoragePublicDirectory()
。