我正在从我的应用程序启动相机。我正在使用 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/