android - 如何获取相机拍摄的图像的Uri并将其存储到图库

标签 android camera gallery

我正在从我的应用程序启动相机。我正在使用 Android.provider.MediaStore.ACTION_IMAGE_CAPTURE 和额外的 android.provider.MediaStore.EXTRA_OUTPUT。如果我使用 EXTRA_OUTPUT 或不使用 EXTRA_OUTPUT,照片就会添加到图库中。

如何获取图库中图片的Uri?我还没有找到一种干净的方法来执行此操作,并且我不想使用上次添加到图库的图像的 Uri,因为我无法确定它是用户拍摄的照片。

编辑: 让我在这里补充一点,我确实知道如何获取图像。目前我正在使用我的 Uri,我将其作为 EXTRA_OUTPUT 与 Intent 一起传递。这不是问题所在。问题是,使用这种方法我将两张照片写入SD卡,而我更喜欢只写入一张。或者如果写了两个,一个在画廊中,一个在我自己的 Uri 中,我想使用其中一个 Uri: 并删除另一个。在这两种情况下,我都需要照片的 Uri,默认情况下将其保存到图库中。

最佳答案

如果您通过调用启动相机

startActivityForResult(cameraIntent, REQUEST_CODE_CAPTURE_IMAGE_ACTIVITY); // start the camera

在 onActivityResult 中你可以捕获 mediaURI

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (requestCode == REQUEST_CODE_CAPTURE_IMAGE_ACTIVITY
                && resultCode == RESULT_OK) {
                Uri imageUri = null;
                if (data != null){
                   imageUri = data.getData();
               }
        }
    }

REQUEST_CODE_CAPTURE_IMAGE_ACTIVITY 是一个静态整数值,用于标识通过 Intent 发出的请求。这样,如果您有多个 startActivityForResults,您就可以确定哪一个会返回。

请注意,如果您通过 EXTRA_OUTPUT 预先插入 URI,您将无法通过 data.getData() 返回 URI;您必须将预先插入的 URI 存储在变量中,并在 onActivityResult 中检索它,同时检查 imageUri 是否为 null。

例如。

 Uri imageUri = null;
if (data != null){
   imageUri = data.getData();
}
if (imageUri == null && preinsertedUri != null)
 imageUri = preinsertedUri;

//用 imageUri 做一些事情

关于android - 如何获取相机拍摄的图像的Uri并将其存储到图库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192608/

相关文章:

javascript - 使用 jQuery 的自动可点击图片库,第一张图片淡入/淡出但其他图片不淡入?

android - kotlin 中的 init 方法取决于变量的顺序和 init 方法声明

unity-game-engine - Unity - 主相机如何在小于 Canvas 的情况下显示整个 Canvas ?

android - 使用 Android NDK 和内核不支持的摄像头的原始 USB 连接实现 UVC 驱动程序

java - 回收器 View 中的空对象引用

html - 如何在缩略图中显示图像的中心

java - 从我的应用程序发送短信

java - 从SD卡读取

android - 需要从按钮 onclick 上的 string.xml 获取值。 @Composable 调用只能在 @Composable 函数的上下文中发生

ios - 如何从照片库中选择图片并在应用程序中显示系统相机界面?