Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Foto Câmera

Caros colegas, Por curiosidade, realizei o build do APP "Agenda" e instalei no celular Moto X Play. Quando utilizei a câmera, para gravar como imagem de um contato no APP Agenda, ocorre uma exceção. Isso não ocorre no emulador. Revisei todo FormularioActivy e Manifest e não identifiquei diferença entre o meu código e o código exemplo. Então compilei o código exemplo, instale e tudo funcionou perfeitamente.

Alem FormularioActivy e Manifest onde mais posso revisar o botao e permissões de câmera, para identificar o bug?

7 respostas

Fala ai Luiz, de boa ?

Cara qual é a versão do seu celular ?

Opa, blz. Versão 7.1.1

Luiz, o problema é a versão do android, ocorreu uma mudança lá, o instrutor deixou o código na solução do exercício, que funciona para todas as versões do android.

Esse mesmo :)

Boa noite, Meu codigo deveria ficar dessa forma?

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario);
        helper = new FormularioHelper(this);

        Intent intent = getIntent();
        Aluno aluno = (Aluno) intent.getSerializableExtra("aluno");
        if (aluno != null) {
            helper.preencheFormulario(aluno);
        }

        Button botaoFoto = (Button) findViewById(R.id.formulario_botao_foto);
        botaoFoto.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                caminhoFoto = getExternalFilesDir(null) + "/" + System.currentTimeMillis() + ".jpg";
                File arquivoFoto = new File(caminhoFoto);

                // essa parte muda no Android 7, estamos construindo uma URI
                // para acessar a foto utilizando o FileProvider
                intent.putExtra(MediaStore.EXTRA_OUTPUT,
                        FileProvider.getUriForFile(this,
                                BuildConfig.APPLICATION_ID + ".provider", arquivoFoto));

                startActivityForResult(intent, CODIGO_CAMERA);
            }
        });
    }

No trecho do codigo abaixo ocorre, o que o seguinte erro: "Wrong 1st argument type."

 intent.putExtra(MediaStore.EXTRA_OUTPUT,
                        FileProvider.getUriForFile(this,
                                BuildConfig.APPLICATION_ID + ".provider", arquivoFoto));
solução!

O this precisa ser um contexto, nesse caso você está referenciando a classe anonima.

Precisa passar o nome completo. FormularioActivity.this