getExternalStorageDirectory不起作用
我试图在运行4.2.2的Samsung Galaxy Nexus上将文件保存到我的SD卡上。 从我的应用程序,我正在使用
Environment.getExternalStorageDirectory()
但它返回
/storage/emulated/0/
这不是我的SDcard信息所在的位置。 有什么工作方法可以用来获得我的SD卡的正确path吗?
其实这是正确的位置。
从Android 4,2开始,Google引入了多个用户帐户。 每个用户都有他/她自己的外部存储器,在path中具有唯一性的用户标识。
主(默认)用户的ID是0.所以你得到/storage/emulated/0/
作为外部存储的path。
我刚才了解到这是Jelly Bean处理缺lessandroid.permission.WRITE_EXTERNAL_STORAGE
权限的方式。 我还没有看到旧版Android的这种行为。
只需将此行添加到您的AndroidManifest.xml中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Environment.getExternalStorageDirectory()
是指任何设备制造商认为是“外部存储”。 我可以是SD卡以外的东西。
您可以在此处获得更多信息: 查找外部SD卡位置
当然? 你认为你的SD卡在哪? 尝试在该目录上执行ls -l
– 这可能是/storage/emulated/0/
的符号链接。
我认为它是因为使用genymotion模拟器,path是真实的,在Eclipse中它位于
File Explorer - > mnt - > shell - > emulated -> 0
希望能帮助到你 ;)
我不知何故在/ storage / emulated / 0上丢失了我的符号链接,导致类似的失败。 我所做的是使用相机应用程序来拍照。 我观察到图片细节表示它在/ storage / emulated / 0中,尽pipe该目录在文件资源pipe理器中不存在。 然后我重新启动了电话。 重新启动后,链接已存在。
尝试使用getExternalFilesDir()
或getExternalStoragePublicDirectory()
。
从Android 4.2文档