Olá, estou tentando utilizar a câmera do celular para bater uma foto e demonstrar a imagem em um ImageView, e também obter o patch desta imagem para demonstrar também posteriormente. O código que tenho abaixo está funcionando perfeitamente no Android 5.1 em vários celulares diferentes. Porém quado eu executo em um celular que utiliza o Android 6.0 Está ocorrendo erro.
Obs.: O erro está ocorrendo na função “getImageUri(Context inContext, Bitmap inImage)” pois está retornando NULL. Porém não sei porque isso está ocorrendo no Android 6.
Alguém sabe me informar a solução?
Código
public void BaterFoto(View v) {
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent, CAMERA_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
imageRecomepensa = (ImageView)findViewById(R.id.imageViewRecompensa);
imageRecomepensa.setImageBitmap(photo);
// Chame este método pra obter a URI da imagem
Uri uri = getImageUri(getApplicationContext(), photo);
//Uri uri = getImageUri(getApplicationContext(), photo.createScaledBitmap(photo, 300, 400, false));
// Em seguida chame este método para obter o caminho do arquivo
File file = new File(getRealPathFromURI(uri));
caminhoImagem = file.getPath();
Log.i("Script", "Caminho: " + file.getPath());
}
}
public Uri getImageUri(Context inContext, Bitmap inImage) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
return Uri.parse(path);
}
public String getRealPathFromURI(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}