Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema ao capturar foto

Olá. Ao tentar capturar uma fotos minha aplicação é encerrada. Observei que o erro acontece quando envio para a intent da câmera o extra: MediaStore.EXTRA_OUTPUT. Nesse caso o método onActivityResult recebe null na variável data.

Mesmo sem utilizar essa variável tenho problemas. Observei que ao retornar da câmera o método onCreate é chamado novamente.

Método que chama a câmera: Intent irParaCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

caminhoArquivo = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/" + System.currentTimeMillis() + ".jpg"; Uri uri = Uri.fromFile(new File(caminhoArquivo)); irParaCamera.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(irParaCamera, TIRA_FOTO);

Callback:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode==TIRA_FOTO){ if (resultCode== Activity.RESULT_OK){ helper.carregarImagem(caminhoArquivo); } else{ caminhoArquivo = null; } } }

@Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { System.out.println("SALVANDO ESTADO"); super.onSaveInstanceState(outState, outPersistentState); outState.putString("CAMINHO", caminhoArquivo); }

@Override protected void onRestoreInstanceState(Bundle savedInstanceState) { System.out.println("RESTAURANDO ESTADO"); System.out.println(savedInstanceState.getString("CAMINHO")); super.onRestoreInstanceState(savedInstanceState); caminhoArquivo = savedInstanceState.getString("CAMINHO"); } }

1 resposta
solução!

Acabei encontrando a solução:

@Override protected void onSaveInstanceState(Bundle outState) { System.out.println("SALVANDO ESTADO"); outState.putString("CAMINHO", caminhoArquivo);

super.onSaveInstanceState(outState); }

@Override protected void onRestoreInstanceState(Bundle savedInstanceState) { System.out.println("RESTAURANDO ESTADO"); System.out.println(savedInstanceState.getString("CAMINHO")); caminhoArquivo = savedInstanceState.getString("CAMINHO");

super.onRestoreInstanceState(savedInstanceState); }