2012-09-01 218 views
15

我有一些代码,我运行方法MediaStore.Images.Media.insertImage(插入它从源而不是文件名),此代码将图像保存到MediaStore并返回图像的uri。我知道,当它因任何原因失败时,它将返回null而不是uri。这张图片被很多人下载过多次,每过一段时间它都会从这个方法中返回null。我从来没有遇到过这种情况,所以我不知道发生了什么。这可能发生的原因是什么?还有另一个post也有同样的问题,但答案是链接到MediaStore的源代码,但该链接转到一个页面,指出该链接不可用。任何帮助,将不胜感激。谢谢。为什么Images.Media.insertImage返回null

删除我的SD卡后,我得到了这个错误,所以我知道这可能是一个原因,我不知道,但我觉得它也会发生,如果卡是满的。仍然只是想知道是否还有其他原因。

回答

6

MediaStore.Images.Media.insertImage实际上是访问外部存储以保存图像。

这可能会导致你的应用程序失败的一些重要提醒:

  1. USB连接,如果在海量存储模式将阻止SD卡的使用。

  2. 可能还有其他因素可能导致SD卡无法访问,因此请确保您可以先使用文件浏览器访问SD卡。

  3. 确保您的权限设置是否正确与android.permission.WRITE_EXTERNAL_STORAGE

在这里张贴此的完整性,因为我正在从insertImage零配置,而原因是

15

这似乎发生在某些版本的Android上没有/ sdcard/DCIM/Camera目录时。创建这个目录(并获得许可)为我解决了这个问题。

+3

设备重置后,我也发生过这种情况。使用默认的Android相机应用拍摄照片创建了文件夹,之后我可以从我的代码中插入图像。 –

2

,当我有这样一个问题,我用添加权限固定它:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.read_external_storage" /> 
4

我就遇到了这个问题,当我开始用新的SD卡图像的模拟器上运行测试。我能够通过创建/sdcard/Pictures

new File("/sdcard/Pictures").mkdirs();

1

我得到用户许可WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE这是导致空路径

所以一定要确保用户之前执行MediaStore.Images.Media.insertImage解决问题已经允许许可,然后存储图像