Failed to load map. Error contacting Google server

2019-01-11 22:13发布

I have been trying to app a Google Map in my Android app using the v2 API for the past two days, with no success. All I get every time is a

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).

I have followed Google's setup tutorial (https://developers.google.com/maps/documentation/android/start), tried multiple times with different projects in different workspaces, tried different Google accounts, gone through various answers and suggestions here in StackOverflow, but to no avail.

I am using Eclipse 4.2.2 with Android SDK Tools 22.01 and I have installed Google Play services (rev. 7), also I have imported google-play-services_lib into my workspace and added a reference to that to my android project.

Here is my 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;
}

}

Also I created an API Project on https://code.google.com/apis/console/ where I have enabled the Google Maps Android API v2 service. Then I obtained my SHA1 debug certificate fingerprint using

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

and entered that and the package name in the API console, got the API key and put it in the manifest (where my_api_key is). This procedure I repeated a number of times, regenerating the key but with the same result.

Could anyone help with this or suggest anything else I could try? Any help will be greatly appreciated!

17条回答
三岁会撩人
2楼-- · 2019-01-11 22:48

Simple.

If you are sure that the API key is right, and this error still comes up Logcat, then try this:

  1. Uninstall app from device.
  2. Clean the project
  3. And run on device again

The map should now display on the device....this worked for me .. cheers :)

查看更多
乱世女痞
3楼-- · 2019-01-11 22:51

I ran into the same problem and found that this set of permissions works.

<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" />
查看更多
女痞
4楼-- · 2019-01-11 22:55

Found it after all, after turning off WiFi on the device I was using. It seems that when debugging over WiFi you also need the

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

in the manifest. Don't know if it was just my case or it's a general thing, but I guess it should be in the documentation somewhere (it's not).

So if you are reading this and having similar problems try either disabling WiFi or adding the above permission alongside the others.

查看更多
神经病院院长
5楼-- · 2019-01-11 22:56
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="my_api_key" />

android:value="my_api_key" should be an actual key that you get from https://code.google.com/apis/console

查看更多
forever°为你锁心
6楼-- · 2019-01-11 22:57

This permission solved the problem

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
查看更多
做自己的国王
7楼-- · 2019-01-11 22:58

My solution was use the correct file

in my case i used debug.keystore in C:\Users\.android for generate SH1 KEY

after try meny times, a found anoter file in C:\Users\\Downloads\adt-bundle-windows-x86_64\adt-bundle-windows\sdk.android an use it, for generate SH1 Key

and then copy 45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0 values the api key site

All Work again

查看更多
登录 后发表回答