3
respostas

Erro para acessar a Camera

Boa tarde ,

Meu código está aparecendo o seguinte erro

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: br.com.senai.agenda, PID: 7414
                  android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/br.com.senai.agenda/files/1521141232753.jpg exposed beyond app through ClipData.Item.getUri()
                      at android.os.StrictMode.onFileUriExposed(StrictMode.java:1960)

Esse é meu código

public class FormularioActivity extends AppCompatActivity {

    public static final int CODIGO_CAMERA = 567;
    private Button botaoCadastrar;
    private String caminhoFoto;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario);
        botaoCadastrar = findViewById(R.id.btnCadastrar);

        final FormularioHelper helper = new FormularioHelper(this);

        Intent intent = getIntent();
        Contato contato = (Contato) intent.getSerializableExtra("contato");
        if(contato != null){
            helper.preecheFormulario(contato);
        }

        Button botaoFoto = helper.botaoFoto;

        botaoFoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
             Intent intentCamera =  new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// Chamando a camera
             caminhoFoto = getExternalFilesDir(null)+ "/" + System.currentTimeMillis() + ".jpg"; //definindo o caminho e nome do arquivo salvo
                File arquivoFoto = new File(caminhoFoto);// criando arquivo
             intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(arquivoFoto));//armazenando na intent para recebermos
             startActivityForResult(intentCamera, CODIGO_CAMERA);
            }
        });

        botaoCadastrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Contato contato = helper.pegaContato();
                ContatoDAO dao = new ContatoDAO(FormularioActivity.this);

                if(contato.getId() != null){
                    dao.alterar(contato);
                }else {
                    dao.inserir(contato);
                }
                dao.close();

                Toast.makeText(getApplicationContext(),"Contato: "+contato.getNome(), Toast.LENGTH_LONG).show();
                finish();
            }
        });

    }

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

        if (requestCode == CODIGO_CAMERA){
            //ABRIR A FOTO QUE TIRAMOS
            ImageView foto = findViewById(R.id.formulario_foto);
            Bitmap bitmap = BitmapFactory.decodeFile(caminhoFoto);
            Bitmap bitmapReduzido = Bitmap.createScaledBitmap(bitmap, 300,300, true);
            foto.setImageBitmap(bitmapReduzido);
            foto.setScaleType(ImageView.ScaleType.FIT_XY);

        }
    }
}

Alguém poderia me ajudar na resolução do meu problema?

3 respostas

Fala ai Carlos, de boa ?

Cara você deve estar fazendo o código no android 7 ou posterior, imagino.

Houve uma mudança no android 7 para frente que muda o formato de tirar foto, na solução do instrutor ele te mostra como solucionar isso, dá uma olhadinha.

Opa muito obrigado vou re-ver os vídeos.

Opa, estou com o mesmo problema, tu conseguiu solucionar?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software