为什么Images.Media.insertImage返回null

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

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

Solutions Collecting From Web of "为什么Images.Media.insertImage返回null"

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

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

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

  1. 在大容量存储模式下,USB连接将阻止SD卡的使用。

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

  3. 确保使用android.permission.WRITE_EXTERNAL_STORAGE正确configuration了您的权限

在这里发布这个完整性,因为我得到一个null从insertImage,原因是1。

我遇到了这个问题,当我在一个新的SD卡图像模拟器上运行testing。 我能够通过创build/sdcard/Pictures来解决这个问题

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

当我有这样的问题,我修复了添加权限:

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

我得到用户权限WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE之前执行MediaStore.Images.Media.insertImage这是导致空path

所以请确保用户已经允许,然后存储图像