web-dev-qa-db-fra.com

Impossible de charger la carte. Erreur lors du contact avec un problème de serveurs Google avec Google Maps Google api v2

J'ai essayé d'appliquer une carte Google Map dans mon application Android à l'aide de l'API v2 ces deux derniers jours, sans succès. Tout ce que je reçois à chaque fois est un

Google Maps Android API(16603): Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

J'ai suivi le didacticiel d'installation de Google ( https://developers.google.com/maps/documentation/Android/start ), essayé plusieurs fois avec différents projets dans différents espaces de travail, essayé avec différents comptes Google, consulté plusieurs réponses et suggestions ici dans StackOverflow, mais en vain.

J'utilise Eclipse 4.2.2 avec Android SDK Tools 22.01 et j'ai installé les services Google Play (rév. 7). J'ai également importé google-play-services_lib dans mon espace de travail et ajouté une référence à cela dans mon projet Android.

Voici mon code:

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.googlemapdemo"
Android:versionCode="1"
Android:versionName="1.0" >

<uses-sdk
    Android:minSdkVersion="8"
    Android:targetSdkVersion="17" />

<permission
    Android:name="com.example.googlemapdemo.permission.MAPS_RECEIVE"
    Android:protectionLevel="signature" />
<uses-permission Android:name="com.example.googlemapdemo.permission.MAPS_RECEIVE"/>

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

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

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:theme="@style/AppTheme" >
    <activity
        Android:name="com.example.googlemapdemo.MainActivity"
        Android:label="@string/app_name" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <meta-data
        Android:name="com.google.Android.maps.v2.API_KEY"
        Android:value="my_api_key" />
</application>

</manifest>

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:map="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/the_map"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:name="com.google.Android.gms.maps.SupportMapFragment"
/>

MainActivity.Java

package com.example.googlemapdemo;

import Android.os.Bundle;
import Android.support.v4.app.FragmentActivity;
import Android.view.Menu;

public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

De plus, j'ai créé un projet d'API sur https://code.google.com/apis/console/ où j'ai activé le service Google Maps Android API v2. Ensuite, j'ai obtenu mon empreinte de certificat de débogage SHA1 à l'aide de

keytool -list -v -keystore "C:\Users\my_user_name\.Android\debug.keystore" -alias androiddebugkey -storepass Android -keypass Android

et entré cela et le nom du paquet dans la console de l'API, obtenu la clé de l'API et la mettre dans le manifeste (où my_api_key est). Cette procédure, j'ai répété plusieurs fois, en régénérant la clé mais avec le même résultat.

Quelqu'un pourrait-il m'aider ou suggérer quoi que ce soit d'autre que je pourrais essayer? Toute aide est la bienvenue!

24
pharlez

Je l'ai trouvé après tout, après avoir désactivé le WiFi sur l'appareil que j'utilisais. Il semble que lors du débogage via WiFi, vous avez également besoin de la 

<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />

dans le manifeste. Je ne sais pas si c'était juste mon cas ou si c'était un problème général, mais je suppose que cela devrait figurer quelque part dans la documentation (ce n'est pas le cas).

Par conséquent, si vous lisez ceci et rencontrez des problèmes similaires, essayez de désactiver Wi-Fi ou d’ajouter l’autorisation ci-dessus à côté des autres.

22
pharlez

Simple.

Si vous êtes sûr que la clé d'API est correcte et que l'erreur persiste, Logcat, Essayez alors ceci: 

  1. Désinstallez l'application de l'appareil. 
  2. Nettoyer le projet 
  3. Et courir à nouveau sur l'appareil

La carte devrait maintenant s'afficher sur l'appareil. Cela a fonctionné pour moi.

24
Pravin Mohol

Cette permission a résolu le problème

<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/> 
5
Inc
<meta-data
    Android:name="com.google.Android.maps.v2.API_KEY"
    Android:value="my_api_key" />

Android: value = "my_api_key" doit être une clé que vous obtenez depuis https://code.google.com/apis/console

3
user1154920

J'ai rencontré le même problème et j'ai constaté que cet ensemble d'autorisations fonctionnait. 

<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
3
Gustavo Guevara

Je pense que c'est le problème de votre clé API.

Essayez le projet Android Sample pour les cartes (service Google Play) à partir du nouveau projet.

et ajoutez votre clé API dans le fichier de cartes AndroidManifest.xml.

Si cela ne fonctionne pas, ce sera le problème de la clé API.

2
Swap

La réponse à mon problème similaire est d'ajouter:

<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />
2
Zephyr

juste pour dire, j'étais sûr d'avoir tout bien fait, mais j'ai finalement remarqué que le nom du paquet dans le projet n'était pas le même que celui déclaré dans le fichier AndroidManifest.xml, donc pas dans la console API Google.

Devinez quoi, je l'ai changé et ... tadaa ça a fonctionné!

Alors pour qui vient ici, vérifiez ça aussi!

2
Karl.S

Passez juste quelques heures frustrantes avec ce même problème. 

J'essayais de lancer l'application mapdemo de Google. Les nouvelles clés générées, etc., ne s'exécuteraient toujours pas. 

La solution simple décrite ci-dessus consistait à supprimer l'application de la tablette et à l'exécuter à nouveau pour Eclipse. Le problème est parti.

Dans Eclipse: Fenêtre, Préférences, Android, Construire, L’empreinte digitale du fichier de clés de débogage est la valeur dont vous avez besoin (elle correspond à la méthode documentée par Google en utilisant Keytool à partir de la ligne de commande).

2
jimsis

Assurez-vous que "Google Maps Android API v2" est activé... Sous console API Google, Services (voir capture d'écran ci-dessous . S'il n'est pas activé, vous n'obtiendrez pas d'erreur indiquant que le service est désactivé .__ vous avez entré la clé SHA1.

Capture d'écran

2
Peter File

Ma solution était d'utiliser le bon fichier

dans mon cas, j'ai utilisé debug.keystore dans C:\Utilisateurs\.Android pour générer la clé SH1

après avoir essayé plusieurs fois, un autre fichier trouvé dans C:\Utilisateurs \\ Téléchargements\adt-bundle-windows-x86_64\adt-bundle-windows\sdk.Android et utilisé pour générer la clé SH1

puis copiez 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0 les valeurs de la clé api site

Tous travaillent à nouveau

2
rtorrens

J'ai trouvé une nouvelle solution qui était mon erreur stupide.

Peut-être vous avez-vous changé application package name après l'intégration de Google Map.

Une empreinte digitale de certificat SHA1 et un nom de package (séparés par un point-virgule) par ligne. Exemple: 

45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example

Vérifier Console Google API

1
Pratik Butani

Assurez-vous d'avoir signé apk avec la clé droite

http://developer.Android.com/tools/publishing/app-signing.html

1
Michal Hatak

Après avoir passé plusieurs heures et suivi chaque astuce sur stackoverflow, j’ai réussi à essayer une dernière chose. 

Je voulais que ma carte s'affiche dans une autre activité que j'appelle mapActivity et non la mainActivity. Ainsi, lorsque j'ai créé la clé sh1 dans l'API de la console Google, j'ai saisi le nom du package pour mon mapActivity. 

!! MAIS il doit toujours s'agir du nom du package de l'activité principale même si vous n'y affichez pas la carte, donc = packagename.appname de mainactivity

0
Per Johannessen

J'ai résolu ce genre de problème, j'espère que les gens qui trouvent le même problème avec moi (espérons-le, personne d'autre ne fera la même erreur) le trouveront utile

ma cause était que j'ai fait une erreur quand j'ai créé le projet, le nom du paquet était faux, puis j'ai changé le nom du paquet du projet, cela produira 2 applications avec le même nom mais un nom de paquet différent à partir d'ici les cartes ne fonctionnaient plus. alors même si j'ai changé la clé de l'API Google google côté serveur, cela ne fonctionnera toujours pas. 

solution: essayez de désinstaller les deux applications en premier, puis nettoyez la solution. et la carte apparaît à nouveau.

0
Junius

Assurez-vous que vous utilisez l'empreinte du certificat de débogage et non une empreinte de version dans Google Developers Console. Vous trouverez des instructions sur la recherche de votre clé de débogage ici .

0
Oscar