20
respostas

Não consigo abrir o mapa

Já coloquei o projeto google_play_service_lib, gerei a chave e coloquei no meu android manifest, coloquei as permissões necessárias e nada funciona, testei no emulador 4.4, tentei no meu celular, mais todos param e fecham a aplicação. Fiz tudo como mostrou no vídeo, não consigo exibir o mapa o que pode ser???

20 respostas

Você entrou no Console do Google e criou o seu projeto lá com a chave que você gerou ?

Sim, criei

Ah um detalhe, no console do Google não aparece a opção Google Maps V2 como aparece na vídeo aula, só aparece Google Maps, eu ativei essa opção.

Vou colocar aqui o código do meu Android Manifest para ver se pode ser algum erro lá, se está faltando alguma permissão.

ARQUIVO MANIFEST

'

'

Beleza, posta aqui o seu Manifest e o Log quando o app quebra por favor

'''

'''

'''

O editor não deixa eu colar aqui o código

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.principal"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <permission
        android:name="com.principal.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.principal.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyA7zEItw3eNuWgTN8uFjYxT_LMmsXNyGaw" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="integer/google_play_services_version" />

        <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" />
        <activity
            android:name=".MostraAlunosProximosActivity"
            android:label="@string/title_activity_mostra_alunos_proximos" >
        </activity>
    </application>

</manifest>

Me manda por email então Alan.m21@hotmail.com

Oi pessoal,

quando forem colocar trechos de código, usem três crases: ```. Vocês estavam usando três aspas: '''

Então é só fazer assim:

3 crases

código

3 crases

Você pode postar o Log com o erro ao tentar executar o app ?

06-01 14:12:35.561: E/AndroidRuntime(1139): Process: com.principal, PID: 1139
06-01 14:12:35.561: E/AndroidRuntime(1139): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.principal/com.principal.MostraAlunosProximosActivity}: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 6587000 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.os.Handler.dispatchMessage(Handler.java:102)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.os.Looper.loop(Looper.java:136)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.ActivityThread.main(ActivityThread.java:5001)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at java.lang.reflect.Method.invokeNative(Native Method)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at java.lang.reflect.Method.invoke(Method.java:515)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at dalvik.system.NativeStart.main(Native Method)
06-01 14:12:35.561: E/AndroidRuntime(1139): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 6587000 but found 0.  You must have the following declaration within the <application> element:     <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.common.GooglePlayServicesUtil.D(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.maps.internal.x.T(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.maps.internal.x.S(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.maps.SupportMapFragment$b.nO(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.maps.SupportMapFragment$b.a(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.dynamic.a.a(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.dynamic.a.onCreate(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at com.google.android.gms.maps.SupportMapFragment.onCreate(Unknown Source)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.support.v4.app.Fragment.performCreate(Fragment.java:1481)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:908)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:571)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.Activity.performStart(Activity.java:5241)
06-01 14:12:35.561: E/AndroidRuntime(1139):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)

Olhando essa stacktrace é possível ver a causa do erro que apareceu (quebrei umas linhas para facilitar a leitura, mas o texto é o mesmo do erro):

The meta-data tag in your app's AndroidManifest.xml does not have the right value.  Expected 6587000 but found 0.  
You must have the following declaration within the <application> element:     

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version />

Ou seja, no seu AndroidManifest.xml, dentro da tag application, você precisa colocar o seguinte trecho:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version />

Ficando assim:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.principal"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="19" />

    <permission
        android:name="com.principal.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.principal.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyA7zEItw3eNuWgTN8uFjYxT_LMmsXNyGaw" />
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <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" />
        <activity
            android:name=".MostraAlunosProximosActivity"
            android:label="@string/title_activity_mostra_alunos_proximos" >
        </activity>
    </application>

</manifest>

Você só tinha esquecido um @ antes do integer no seu meta-data. ;)

Realmente como não vi a falta desse @, coloquei e sai desse erro e esbarrei em outro. Parece que está gerando erro no Zoom, comentei o método e testei no celular finalmente abriu a tela, porém o mapa não abriu.

Estou deixando passar mais alguma coisa

Minha Classe MapaFragment

package com.fragment;

import java.util.List;

import com.dados.BdAluno;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.negocios.Aluno;
import com.util.Localizador;

public class MapaFragment extends SupportMapFragment{

    @Override
    public void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        Localizador localizador = new Localizador(getActivity());
        LatLng local = localizador.getCoordenada("Rua Jaú, 1103, Boqueirão, Praia Grande");
        centralizar(local);

        BdAluno objBdAluno = new BdAluno(getActivity());
        List<Aluno> alunos = objBdAluno.getLista();
        objBdAluno.close();

        for (Aluno aluno : alunos) {
            LatLng coordenada = localizador.getCoordenada(aluno.getEndereco());
            if(coordenada != null){
                MarkerOptions marcador  = new MarkerOptions().position(coordenada).title(aluno.getNome()).snippet(aluno.getEndereco());
                getMap().addMarker(marcador);
            }
        }
    }

    public void centralizar(LatLng local){
        GoogleMap mapa = getMap();    
        //Aplicando Zoom ao Mapa
        mapa.moveCamera(CameraUpdateFactory.newLatLngZoom(local, 17));
    }

}

Log do Erro

06-01 16:54:55.007: E/AndroidRuntime(1183): FATAL EXCEPTION: main
06-01 16:54:55.007: E/AndroidRuntime(1183): Process: com.principal, PID: 1183
06-01 16:54:55.007: E/AndroidRuntime(1183): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=com.google.android.gms flg=0x80000 pkg=com.android.vending }
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1632)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.app.Activity.startActivityForResult(Activity.java:3424)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.app.Activity.startActivityForResult(Activity.java:3385)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:840)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.app.Activity.startActivity(Activity.java:3627)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.app.Activity.startActivity(Activity.java:3595)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at com.google.android.gms.dynamic.a$5.onClick(Unknown Source)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.view.View.performClick(View.java:4438)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.view.View$PerformClick.run(View.java:18422)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.os.Handler.handleCallback(Handler.java:733)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.os.Looper.loop(Looper.java:136)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at android.app.ActivityThread.main(ActivityThread.java:5001)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at java.lang.reflect.Method.invokeNative(Native Method)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at java.lang.reflect.Method.invoke(Method.java:515)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-01 16:54:55.007: E/AndroidRuntime(1183):     at dalvik.system.NativeStart.main(Native Method)

Hmm... Acho que esse log do erro não é referente ao erro que você está tomando. Você poderia ver se não tem outro erro mais abaixo dessa parte que você colocou no fórum?

06-01 20:51:58.067: E/AndroidRuntime(1327): FATAL EXCEPTION: main
06-01 20:51:58.067: E/AndroidRuntime(1327): Process: com.principal, PID: 1327
06-01 20:51:58.067: E/AndroidRuntime(1327): java.lang.RuntimeException: Unable to resume activity {com.principal/com.principal.MostraAlunosProximosActivity}: java.lang.NullPointerException: CameraUpdateFactory is not initialized
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2774)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2803)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2238)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.os.Handler.dispatchMessage(Handler.java:102)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.os.Looper.loop(Looper.java:136)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.ActivityThread.main(ActivityThread.java:5001)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at java.lang.reflect.Method.invokeNative(Native Method)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at java.lang.reflect.Method.invoke(Method.java:515)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at dalvik.system.NativeStart.main(Native Method)
06-01 20:51:58.067: E/AndroidRuntime(1327): Caused by: java.lang.NullPointerException: CameraUpdateFactory is not initialized
06-01 20:51:58.067: E/AndroidRuntime(1327):     at com.google.android.gms.internal.jx.b(Unknown Source)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at com.google.android.gms.maps.CameraUpdateFactory.nB(Unknown Source)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at com.google.android.gms.maps.CameraUpdateFactory.newLatLngZoom(Unknown Source)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at com.fragment.MapaFragment.centralizar(MapaFragment.java:40)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at com.fragment.MapaFragment.onResume(MapaFragment.java:22)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.support.v4.app.Fragment.performResume(Fragment.java:1547)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:978)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1103)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1911)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:467)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:456)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.Activity.performResume(Activity.java:5323)
06-01 20:51:58.067: E/AndroidRuntime(1327):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2764)

Esse erro pode acontecer quando o mapa ainda não está pronto para ser usado. Uma forma de resolver isso é alterar seu método centralizar para dar zoom somente a partir do momento em que o mapa estiver pronto para ser usado, assim:

public void centralizar(final LatLng local){
    getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(GoogleMap googleMap) {
            //esse googleMap é o mesmo que você teria se chamasse o getMap
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(local, 17));
        }
    });
}

Eu fiz as alterações, porém o mapa continua sem abrir, mais agora não gera mais erro no logcat

Pode ser por que na vídeo aula aparece para ativar a chave Google Maps V2 e no site do Google só é possível ativar a Google Maps Api?

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