8
respostas

O mapa não aparece

Olá Pessoal!

Quando clico no mapa o mesmo não aparece . Alterei o código de acordo com os tópicos relacionados, já gerei diversas chaves no google, procurei na net, porém não consegui corrigir o erro.

Agradeço muito se alguém puder me ajudar!

Segue o erro:

E/Google Maps Android API: Authorization failure.  Please see https://developers.google.com/maps/documentation/android-api/start for how to correctly set up the map.
                           In the Google Developer Console (https://console.developers.google.com)
                           Ensure that the "Google Maps Android API v2" is enabled.
                           Ensure that the following Android Key exists:
                               API Key: AIzaSyDrvbtq4EuPhrK2NFaRJ-8iKO_aj4wUBu0
                               Android Application (<cert_fingerprint>;<package_name>): 18:0B:E7:FB:72:5C:A8:EF:60:57:1C:13:88:03:FB:7D:20:58:48:88;br.com.alura.agenda

Segue os arquivos relacionados:

app:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.1'
    implementation 'com.android.support:design:28.0.0-alpha3'
    implementation 'com.android.support:support-v4:28.0.0-alpha3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
    implementation 'com.google.android.gms:play-services:12.0.1'
}

google_mapa_api.xml

<resources>
    <!--
    TODO: Before you run your application, you need a Google Maps API key.

    To get one, follow this link, follow the directions and press "Create" at the end:

    https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=FF:A5:99:5B:16:B9:BF:21:F1:7B:2D:4A:79:F4:1C:D9:62:A8:8E:84%3Bbr.com.alura.agenda

    You can also add your credentials to an existing key, using these values:

    Package name:
    FF:A5:99:5B:16:B9:BF:21:F1:7B:2D:4A:79:F4:1C:D9:62:A8:8E:84

    SHA-1 certificate fingerprint:
    FF:A5:99:5B:16:B9:BF:21:F1:7B:2D:4A:79:F4:1C:D9:62:A8:8E:84

    Alternatively, follow the directions here:
    https://developers.google.com/maps/documentation/android/start#get-key

    Once you have your key (it starts with "AIza"), replace the "google_maps_key"
    string in this file.
    -->
    <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyDrvbtq4EuPhrK2NFaRJ-8iKO_aj4wUBu0</string>
</resources>

AndroidManifest.xml

<resources>
    <!--
    TODO: Before you run your application, you need a Google Maps API key.

    To get one, follow this link, follow the directions and press "Create" at the end:

    https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=FF:A5:99:5B:16:B9:BF:21:F1:7B:2D:4A:79:F4:1C:D9:62:A8:8E:84%3Bbr.com.alura.agenda

    You can also add your credentials to an existing key, using these values:

    Package name:
    FF:A5:99:5B:16:B9:BF:21:F1:7B:2D:4A:79:F4:1C:D9:62:A8:8E:84

    SHA-1 certificate fingerprint:
    FF:A5:99:5B:16:B9:BF:21:F1:7B:2D:4A:79:F4:1C:D9:62:A8:8E:84

    Alternatively, follow the directions here:
    https://developers.google.com/maps/documentation/android/start#get-key

    Once you have your key (it starts with "AIza"), replace the "google_maps_key"
    string in this file.
    -->
    <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaSyDrvbtq4EuPhrK2NFaRJ-8iKO_aj4wUBu0</string>
</resources>
8 respostas

Olá!

Geralmente esse erro acontece quando tem algo errado com a chave da API mesmo.

Uma coisa que costuma acontecer é o pacote da aplicação estar diferente do nome do pacote que foi usado para gerar a chave. A gente consegue verificar isso no AndroidManifest.xml mas acho que sem querer acabou vindo o google_maps_api.xml 2 vezes e não veio o manifest. Consegue corrigir aqui pra gente dar uma olhada?

Olá Jeferson,

Primeiramente muito obrigado pela ajuda!

Acho que o pacote está correto, porém segue o arquivo.

Como estou entrando agora no mundo dev android por isso os comentários no código.

AndroidManifest.xml:

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

    <!-- -Permissão para fazer chamadas telefonicas -->
    <uses-permission android:name="android.permission.CALL_PHONE" />

    <!-- -Permissão para o adroid trabalhar com SMS -->
    <uses-permission android:name="android.permission.RECEIVE_SMS" />

    <!-- -Permissão para usar a internet -->
    <uses-permission android:name="android.permission.INTERNET" />

    <!--
         The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
         Google Maps Android API v2, but you must specify either coarse or fine
         location permissions for the 'MyLocation' functionality.
         PERMISSOES PARA O USO DO GPS
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />


    <application
        android:allowBackup="true"
        android:debuggable="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">
            <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" />
        <!-- -android.provider.Telephony.SMS_RECEIVED o envento que vai disparar nosso receiver -->
        <!-- -android.provider.Telephony.SMS_RECEIVED nosso evento -->
        <receiver android:name=".receiver.SMSReceiver">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

        <activity android:name=".ProvasActivity" />
        <activity android:name=".DetalheresProvaActivity" />
        <activity android:name=".ProvasTabletActivity" />
        <!--
             The API key for Google Maps-based APIs is defined as a string resource.
             (See the file "res/values/google_maps_api.xml").
             Note that the API key is linked to the encryption key used to sign the APK.
             You need a different API key for each encryption key, including the release key that is used to
             sign the APK for publishing.
             You can define the keys for the debug and release targets in src/debug/ and src/release/. 
        -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

        <activity android:name=".MapaActivity"></activity>
    </application>

</manifest>

Parece que está tudo correto com o Manifest também, imagino que você já tenha seguido o link que vem no google_maps_api.xml né? esse daqui:

https://console.developers.google.com/flows/enableapi?apiid=maps_android_backend&keyType=CLIENT_SIDE_ANDROID&r=FF:A5:99:5B:16:B9:BF:21:F1:7B:2D:4A:79:F4:1C:D9:62:A8:8E:84%3Bbr.com.alura.agenda

Isso já deveria criar o projeto no console, ativar a API de mapas e gerar a chave. O que eu recomendaria talvez seria criar um novo projeto no console e repetir o procedimento. Não sei se você chegou a fazer o procedimento mais de uma vez mas pode ser que tenha mais de uma chave cadastrada e elas não estejam batendo. Vou ver mais um pouco os códigos que você postou pra ver se vejo algo que não esteja tão aparente.

Gerei novamente e nada! rsrsr

Jerferson,

Não mencionei, pois não estou usando o emulador e sim um celular. Não sei se é relevante esta informação.

Olá,

Consegue postar aqui o arquivo build.gradle (module: app) pra gente dar uma olhada? É o mesmo arquivo de onde você tirou as dependências só pra gente ver como está o applicationId que deve bater com o pacote do curso base.

Segue o Module:app

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "br.com.alura.agenda"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}


dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
    implementation 'com.android.support.constraint:constraint-layout:1.1.1'
    implementation 'com.android.support:design:28.0.0-alpha3'
    implementation 'com.android.support:support-v4:28.0.0-alpha3'
   // implementation 'com.google.android.gms:play-services-maps:12.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
    implementation 'com.google.android.gms:play-services:12.0.1'
}

Parece estar tudo certo também...

Vamos fazer o seguinte, só pra gente eliminar qualquer outro tipo de problema externo vamos tentar criar um novo projeto e quando ele pedir pra você escolher como vai ser a Activity inicial, selecione Google Maps Activity.

Depois de criar o projeto, o google_maps_api.xml vai estar aberto aí você copia o link no browser e copia a chave da API de volta para o xml.

Finalmente, executa a aplicação e vê se o mapa funciona. Se funcionar então realmente tem alguma problema na configuração do seu projeto. Mas vamos fazer o teste primeiro e depois vemos o que podemos fazer pra encontrar o erro no projeto.

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