8
respostas

Imagem não aparece Android N

Boa tarde! Estou com um problema ao executar o APP Agenda. Acompanhei a resolução do problema para Android 7+ no final da aula, mas mesmo assim, ao tirar a foto do contato, a ImageView não é populada. Estou rodando o app num Moto Z, Android 7.1.1

Link do projeto no GitHub

https://github.com/rdgosmartins/alura

Manifest:

        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
        </provider>

filepaths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="." />
</paths>

Java

                Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                caminhoFoto = getExternalFilesDir(null) + "/" + System.currentTimeMillis() + ".jpg";
                File arquivoFoto = new File(caminhoFoto);

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

                startActivityForResult(intentCamera, CODIGO_CAMERA);
8 respostas

Link do projeto no GitHub

https://github.com/rdgosmartins/alura

UP Estou parado no curso.

Oi Rodrigo, tudo bem ?

Cara você pode postar o código inteiro do seu manifest para gente dar uma olhada ?

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="rsmartins.com.br.appagenda">

    <uses-permission android:name="android.permission.CALL_PHONE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".ListaAlunosActivity"
            android:label="Agenda">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".FormularioActivity"
            android:label="Formulario" >
        </activity>

        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
        </provider>

    </application>

</manifest>

Aparentemente está certo.

Vou rodar na minha maquina seu projeto e te dou um feedback, beleza?

Oi Rodrigo, tudo bem ?

Cara, esqueci de te responder, rodei seu projeto na minha máquina.

Você esqueceu algumas coisas importantes.

No manifest precisava colocar a permissão de criação de arquivos

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

E o seu código você estava usando a intent que a própria activity tem e não a que você estava criando :

 btnFoto.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                caminhoFoto = getExternalFilesDir(null) + "/" + System.currentTimeMillis() + ".jpg";
                File arquivoFoto = new File(caminhoFoto);

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

                startActivityForResult(intentCamera, CODIGO_CAMERA);
            }
        });

Bom dia! Obrigado pelo retorno. Realizei as alterações indicadas, mas o projeto ainda não consegue mostrar a imagem no contato. Será que é necessário pedir a Permissão para gravar a imagem assim como a permissão para realizar ligação?

Rodrigo, você precisa fazer o pedido sim, eu mudei no próprio aplicativo igual ao que o jefferson explicou na aula.

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