我正在使用默认的相机意图来获取我的应用中的图像。问题是onActivityResult()
上的相机返回null。 ResultCode
和RequestCode
按预期返回。
我的意图是:
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 1224;
....
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
OnactivityResult是:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
//use imageUri here to access the image
Uri imageuri = data.getData(); // here is getting crash
imageView.setImageFromUri(imageUri);
}
}
}
void setImageFromUri(Uri imgUri){
... TODO assign image from uri
}
当我放入Log时,我得到了resultCode,而responseCode不为null
resultCode = -1
requestCode = 1224
我在哪里做错了?
但拍摄的照片存储在我指定的路径(imageUri)中
是否有其他方法可以使用相机获取图像。
答案 0 :(得分:10)
似乎你知道onActivityResult之前的imageUri。这不是正确的答案,但会很好。
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
//这张图片只是你要使用
所以不要使用
Uri imageuri = data.getData();
只需使用你知道的uri。
您的代码如下所示:
if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
//use imageUri here to access the image
imageView.setImageFromUri(imageUri); // imageUri should be global in the activity
}
}