拍照后获取onActivityResult中的图像Uri?

Moh*_*nde 22 java camera android uri image

我有这个代码:

startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), CAMERA_IMAGE);
Run Code Online (Sandbox Code Playgroud)

这允许该用户拍照.现在我怎么能得到Uri那张照片onActivityResult?这是Intent额外的吗?通过了Intent.getData()吗?

Cri*_*ian 30

protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    Uri u = intent.getData();
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句......在某些设备中存在这种意图的错误.看看这个答案,知道如何解决它.

  • 在Android 4.4中不起作用.运行代码时,Uri u is = null. (2认同)
  • ``Uri u = intent.getData();``是来自"data"的缩略图.处理完整尺寸的图像需要更多的工作.资料来源:http://developer.android.com/training/camera/photobasics.html#TaskPhotoView (2认同)

Gre*_*lli 8

不要只是启动意图,还要确保告诉意图你想要照片的位置.

Uri uri = Uri.parse("file://somewhere_that_you_choose");
Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(photoIntent, CAMERA_IMAGE);
Run Code Online (Sandbox Code Playgroud)

然后,当你调用onActivityResult()方法时,如果它成功,只需打开一个URI的流,它应该全部设置.

  • 这种方法的问题在于,在许多设备上,图像存储在图库中EXTRA_OUTPUT额外AND指定的位置.我个人在一些HTC和LG设备上看过这个,但我知道还有其他人有同样的问题...... (4认同)