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!
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.
Simple.
Si vous êtes sûr que la clé d'API est correcte et que l'erreur persiste, Logcat, Essayez alors ceci:
La carte devrait maintenant s'afficher sur l'appareil. Cela a fonctionné pour moi.
Cette permission a résolu le problème
<uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES"/>
<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
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" />
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.
La réponse à mon problème similaire est d'ajouter:
<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />
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!
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).
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.
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
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
Assurez-vous d'avoir signé apk avec la clé droite
http://developer.Android.com/tools/publishing/app-signing.html
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
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.
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 .