2017-07-15 97 views
0

我想从相机捕捉图像。但是它返回null Intent onActivityResult。 这里是我的代码onActivityResult返回null意图

CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, 7); 
    } 
}); 

而且onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 7 && resultCode == RESULT_OK) { 
     try { 
      if(data.getData() == null) { 
       bitmap = (Bitmap)data.getExtras().get("data"); 
      } else { 
       bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData()); 
      } 

      ImageViewHolder.setImageBitmap(bitmap); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我是新来的Android所以请详细解释回答。 在此先感谢..!

+0

使用setImageUrI()你提供了相机许可吗?如果Android版本大于棒棒糖,请确保在运行时授予相机权限 – Rahul

+0

您确定intent对象为空或intent对象中的数据为空吗? –

+0

数据意图为空 –

回答

0

通过传递意图通过这个开始你的工作:

startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), 100); 

所以从使用相机拍摄的图像通过意图获取图像数据后:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Uri yourCapturedImage = intent.getData(); 
} 
0

确保您已经添加摄像头权限,在清单中写入权限并交叉验证运行时权限。

使用你的意图如下图所示,并指定路径在那里拍摄的图像将写 -

intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

    Uri outputUri = Uri.fromFile("path of your directory"); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri); 

    startActivityForResult(intent, 7); 
0

您还可以使用setImageURI()onActivityResult()代替setImageBitmap()

首先在添加摄像头权限Android清单。如果您的Android版本低于棒棒糖更大,那么你需要添加运行时权限See documentations here

<uses-permission android:name="android.permission.CAMERA"/> 

,然后你的代码将

CaptureImageFromCamera.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, 7); 
    } 
}); 

,然后在onActivityResult()

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch (requestCode) 
     { 
      case 7: 
       /*case 7 for image results and display image in imageview via Uri*/ 
       if (resultCode == RESULT_OK) 
       { 
        Uri imageUri = data.getData(); 
        ImageViewHolder.setImageURI(imageUri); 
       } 
       return; 
      default: 
       return; 
     } 
}