2017-07-15 4 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(); 
     } 
    } 
} 

である私のコードです。 事前に感謝..!

+0

setImageUrI()を使用する実行時の権限そして

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

See documentations hereとを追加する必要がありますカメラの許可を提供しましたか?アンドロイドのバージョンがロリポップより大きい場合、実行時にカメラの許可が与えられていることを確認してください – Rahul

+0

インテントオブジェクトがヌルかインテントオブジェクトのデータがヌルか確かめていますか? –

+0

データのインテントがnull –

答えて

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

あなたはまた、代わりに、すべてのsetImageBitmap()

まずのonActivityResult()setImageURI()を使用することができますが、カメラの権限を追加しますアンドロイドマニフェストAndroidのバージョンがロリポップよりも大きい場合、あなたはあなたのコードが

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; 
     } 
} 
関連する問題