2017-07-15 57 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; 
     } 
} 
相關問題