AFAIK,您无法可靠地告诉相机应用程序(独立于设备)a)在哪里保存图像并且b)也只保存一次。我不得不采用这种方法:
1)只需让相机应用程序将图片保存到它喜欢的任何地方,方法是删除putExtra(...)
陈述:
`intent.putExtra(MediaStore.EXTRA_OUTPUT, mNextImageFileUri); // set the image file name`
这(即not设置 EXTRA_OUTPUT) 将保证只将一张图像保存到默认图片位置。
2)找到最后拍摄的照片,并保存其ID,以供以后安全检查。 (查询最后一张图片ID,排序依据DATE_TAKEN
.)
3)激发捕获意图,并在你的onActivityResult
再次获取最后拍摄的图像,并保存其 ID、URI 和路径。
4) 如果您的新图片 ID 大于之前保存的图片 ID,请继续,否则会惊慌失措...
5) 将原始图像文件(使用其路径)移动到您的首选位置。现在,原始文件已被删除。
6) 使用其 URI 删除原始媒体图像条目。现在该图像也已从图库中删除。
7)如果您还想删除缩略图,那么,您需要以类似的方式查询和删除它们,但我建议不要这样做:设备重新启动或其他媒体扫描应刷新缩略图缓存。此外,在删除原始图像后,您实际上很可能在短时间内需要该缩略图。 (如果您需要更长时间,则需要小心:如果您将照片移至私人应用程序目录(getExternalFilesDir(Environment.DIRECTORY_PICTURES)
) 媒体经理将not(能够)为您生成缩略图,因此您可能需要管理自己的缩略图。)