1
resposta

Aplicação falhando no Android 8 ao clicar no botão de tirar foto . Solução caso alguém precise

Prezados, boa tarde.

Na Aula 2 "Botões funcionando" do módulo Android 2 tive vários erros, mesmo seguindo as orientações da Aula 6 (Invocando a câmera) onde o professor escreveu "No Android 7". Além disto no texto o código está um pouco diferente do que o que foi feito até nesta aula.

Segue passo a passo para correção:

No Lister do botão "botaoFoto" o intentCamera.putExtra até a aula 2 é da seguinte forma:

intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(arquivoFoto)); 

Nas orientações da Aula 6 foi sugerido realizar da seguinte forma abaixo. Contudo desta forma ocorre erro ao acionar o método GetUriForFile:

intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(FormularioActivity.this, BuildConfig.APPLICATION_ID + "provider", arquivoFoto)); 

SOLUÇÃO:

Configure a linha intentCamera.putExtra conforme abaixo, observando que a alteração foi realizada no segundo parâmetro. O fileprovider também foi alterado no AndroidManifest.xml na tag authorities:

intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(FormularioActivity.this, "aluracursoandroid.com.agenda.fileprovider",  arquivoFoto));

AndroidManifest.xml

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="aluracursoandroid.com.agenda.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>
1 resposta

Boa tarde, Daniel! Como vai?

Obrigado por compartilhar com a comunidade aqui da Alura a sua solução! Assim todos nós crescemos juntos!

Grande abraço e bons estudos!

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